![]() |
Cancelar borrado
Como podria hacer un trigger en firebird 1.5 para que si el usuario intenta borrar un registro con un codigo X la base de datos no le deje borrarlo
Ej.: Quiero estar seguro de que el registro de una tabla con codigo 1 este siempre en esta y no pueda se borrado de ninguna manera, asi que si lo intentan borrar la base de datos deniege esta peticion |
No conozco IB, pero lo que quieres hacer es un trigger de validación, la forma clásica es crear un trigger BEFORE FOR EACH ROW (antes de la ejecución y por cada fila) y poner una pregunta donde si se cumple cierta condición producir un error (exception).
|
Yo lo uso tal cual lo explica delphi.com.ar.
Código:
|
Hola Foro,
Sobre el metodo que utilizas para permitir borrados unicamente sobre le ultimo registro, creo que no funcionaria para una aplicacion de multiples usuarios, en cuyo caso tendrias que colocar un campo a tu tabla con el nombre del usuario y cambiar el select a algo como: SELECT MAX(num) FROM Facturas WHERE periodo=OLD.periodo AND serie=OLD.serie and usuario = current_user INTO AUX; Tambien como las llaves primarias (por lo menos hasta la version de Firebird 1.0.3) se crean en orden ascendente, el rendimiento caeria en la medida que aumente el numero de registros en la tabla, deberias entonces crear un indice descendente (de mayor a menor) sobre la columna num. |
Gracias lbuelvas por tu apreciación.
Uhm!! Lo del usuario no valdría, pues sea quien fuere el que haga la factura, una vez "numerada" ya no se puede borrar si existe otra con numeración superior (legalmente no puede haber "vacios" entre facturas). Aún no me preocupa lo de multipuesto, pero tendré que arreglarlo para el futuro. Gracias. PD: Tomo nota de lo del indice. thx. |
Gracias por contestar al final he conseguido hacer lo que queria creando unas excepciones tal y como decis de la siguiente manera:
Código:
CREATE EXCEPTION EXC_USUARIOS 'NO SE PUEDE BORRAR AL USUARIO 1'; |
| La franja horaria es GMT +2. Ahora son las 21:05:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi