SET TERM^;
CREATE TRIGGER EL_TRIGGER FOR LA_TABLA
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE CURRYEAR INTEGER;
DECLARE VARIABLE MAXNUM INTEGER;
BEGIN
CURRYEAR = COALESCE(EXTRACT(YEAR FROM NEW.FECHA),
EXTRACT(YEAR FROM CURRENT_DATE));
SELECT COALESCE(MAX(NUMERO), 0) FROM LA_TABLA
WHERE EXTRACT(YEAR FROM FECHA) = :CURRYEAR
INTO :MAXNUM;
IF (MAXNUM = 0) THEN
NEW.NUMERO = 1;
ELSE
NEW.NUMERO = MAXNUM + 1;
END^
SET TERM;^