Hola a todos.
Os pongo en antecedentes: Tengo un fichero de movimientos de artículos donde se reflejan las compras, ventas, ajustes, etc... dicho fichero tiene varios triggers asociados para mantenimiento de estadisticas, stocks, acumulados, etc... El caso es que estoy realizando un proceso automático de cierre de año que se encarga de borrar apuntes en ese fichero y crear apuntes nuevos, pero no se deben lanzar los triggers.
Si meto en un script las siguientes instrucciones:
Código:
ALTER TRIGGER BD1_MOVIM INACTIVE;
ALTER TRIGGER AD1_MOVIM INACTIVE;
ALTER TRIGGER AD2_MOVIM INACTIVE;
DELETE FROM MOVIM WHERE TIPO_MOVIMIENTO = 'ST';
ALTER TRIGGER BD1_MOVIM ACTIVE;
ALTER TRIGGER AD1_MOVIM ACTIVE;
ALTER TRIGGER AD2_MOVIM ACTIVE;
Y lo ejecuto (esto lo hago mediante un IBSQLScript), todo va correctamente, no se tocan los ficheros de acumulados. Sin embargo, si uso un TIBSql donde voy metiendo las instrucciones una a una y lanzándolas con sus respectivos ExecSQL, cuando llega al DELETE, los triggers siguen activos y se actualizan los ficheros de acumulados, a pesar de que usar una transacción que comiteo al final.
El caso es que después del DELETE necesito hacer operaciones sobre el fichero de movimientos con los triggers inactivos... y no lo consigo.
Uso IBX y he probado en Firebird 1.5 e Interbase 6.1.
Gracias por vuestra atención.