![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
Yo lo uso tal cual lo explica delphi.com.ar.
Código:
CREATE EXCEPTION Facturas_NODELETE_E "ERROR SOLO SE PUEDE BORRAR LA ULTIMA"; SET TERM !! ; CREATE TRIGGER Facturas_BDT FOR Facturas BEFORE DELETE AS DECLARE VARIABLE AUX INTEGER; BEGIN SELECT MAX(num) FROM Facturas WHERE periodo=OLD.periodo AND serie=OLD.serie INTO AUX; IF (OLD.num < :AUX) THEN EXCEPTION Facturas_NODELETE_E; END !! SET TERM ; !! |
|
#2
|
|||
|
|||
|
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.
__________________
Luis Fernando Buelvas T. |
|
#3
|
|||
|
|||
|
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. |
|
#4
|
|||
|
|||
|
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'; SET TERM !!; CREATE TRIGGER BEF_DEL_USUARIOS FOR Usuarios BEFORE DELETE AS BEGIN IF (OLD.IDUSUARIO=1) THEN EXCEPTION EXC_USUARIOS; END!! SET TERM; !! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|