Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Poner a 1 un contador si en una fecha de un año si no hay registros en ese año (https://www.clubdelphi.com/foros/showthread.php?t=93580)

NPIdea 21-11-2018 15:10:16

Poner a 1 un contador si en una fecha de un año si no hay registros en ese año
 
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í:
Código SQL [-]
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

Cita:

Empezado por NPIdea (Mensaje 529625)
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

Cita:

Empezado por Casimiro Notevi (Mensaje 529639)
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.


La franja horaria es GMT +2. Ahora son las 04:36:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi