PDA

Ver la Versión Completa : Poner a 1 un contador si en una fecha de un año si no hay registros en ese año


NPIdea
21-11-2018, 15:10:16
Hola a todos.
Tengo una tabla con:

ID autonumérico
Número numeros consecutivos (si no existe numero en una fecha, ponerlo a 1, si lo hubiese sumar uno al último)
Fecha : Fecha de inserción

Quisiera hacer un trigger before insert que sume a Numero 1 solo si en ese año hay numeros, sino ponerlo a 1.

ID NUMERO FECHA
1 1 01/05/2018
2 2 06/06/2018


10 1 01/01/2019

Quisiera en el trigger poder hacerlo automáticamente antes de insertarlo.

Gracias

ecfisa
21-11-2018, 19:25:15
Hola.

Intenta así:

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;^


Saludos :)

Casimiro Notevi
21-11-2018, 19:27:00
si no existe numero en una fecha, ponerlo a 1
que sume a Numero 1 solo si en ese año hay numeros, sino ponerlo a 1.
No se entiende qué quieres decir con eso de los números en una fecha si hay números.
Vale, veo que ecfisa sí lo ha entendido.

ecfisa
21-11-2018, 19:30:40
Vale, veo que ecfisa sí lo ha entendido.
No apostaría mi vida a eso :D

Saludos :)

NPIdea
22-11-2018, 07:47:48
Muchas gracias por responder tan rápido y sobre todo por entenderlo, jaja.

Yo tampoco hubiese apostado mi vida.