esto, segun tengo entendido, ya ha sido superado en la versión 1.5 de firebird. Básicamente, es debido a que el programa cliente no era capaz de recnoocer el final del trgger/stored procedure, debido a que el caracter de fin de sentencia (
;, que es el que normalmente se usa para delimitar las sentencias en un script, también se utiliza para delimitar las sentencias dentro del trigger.
Si no haces la llamada a set term... ocurrirá que, en un script como este:
Código:
Create trigger mitrigger
Active before insert on tabla
AS
Begin
Update OtraTabla
Set campo = campo + New.campo
where llave = New.llave;
Update OtraTabla2
Set campo = campo + New.campo
where llave = New.llave;
End;
El sistema creerá que la sentencia termina despues del primer punto y coma (justo despues del primer update) y asi la lanzará al pharser de SQL; evidentemente incompleta, con lo que daría un error que provocaría la terminación anormal de la ejecución del script.
Al cambiar el caracter de terminación de las sentencias por
!!, por
^ o por cualquier otro delimitador que no sea el punto y coma, se consigue determinar donde termina efectivamente la sentencia... evitando estos problemas.
Hasta luego.
