[firebase-br] A m/ trigguer que deverá fornecer o prximo N.º de Linha s/gaps no meio, mas não dispara dá erro primeiro em new.linha

Mário Reis mariodosreyx em gmail.com
Sexta Dezembro 2 16:00:59 -03 2022


Desculpem-me com um "D" bem grande:
 IF (:NEW_LINHA IS NULL) THEN
  NEW_LINHA = 1 ;  -- deveria ser   NEW (*PONTO*)LINHA
 ELSE
  NEW*.*LINHA =:NEW_LINHA + 1;
Com os meus melhores cumprimentos
Mário Agostinho Reis
919262146

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.


Mário Reis <mariodosreyx em gmail.com> escreveu no dia sexta, 2/12/2022 à(s)
17:44:

> Boa tarde companheiros,
>
> Tenho este mesmo código rodando em dezenas de ouiyras situações. Aqui
> deu.me uma branca devo estar a esquecer algo muito importante:
> CREATE TABLE LLIVRODEPONTO (
>   LINHA SMALLINT NOT NULL,
>   IDUSER SMALLINT NOT NULL,
>   USLOGIN VARCHAR(10) CHARACTER SET WIN1252 NOT NULL COLLATE PXW_INTL850,
>   MOVIMENTO CHAR(1) CHARACTER SET WIN1252 COLLATE PXW_INTL850,
>   DESCRITIVO VARCHAR(35) CHARACTER SET WIN1252 COLLATE PXW_INTL850,
>   DTHRSVR TIMESTAMP,
>   DTHRCLI TIMESTAMP);
>
>
> ALTER TABLE LLIVRODEPONTO ADD CONSTRAINT PK_LLIVRODEPONTO PRIMARY KEY
> (LINHA,IDUSER,USLOGIN);
>
>
> SET TERM ^ ;
>
> CREATE TRIGGER BI_LLIVRODEPONTO_LINHA FOR LLIVRODEPONTO
> ACTIVE BEFORE
>   INSERT
> POSITION 0
> AS
> DECLARE VARIABLE NEW_ID_USER TYPE OF COLUMN LLIVRODEPONTO.IDUSER;
> DECLARE VARIABLE NEW_LINHA TYPE OF COLUMN LLIVRODEPONTO.LINHA;
> BEGIN
>  -- IF (NEW.LINHA IS NULL) THEN
>   --    NEW.LINHA = GEN_ID(LLIVRODEPONTO_LINHA_GEN1, 1);
>   /* Procedure body */
>   NEW_ID_USER=NEW.IDUSER;
>    IF (NEW.LINHA IS NULL)  THEN
>      BEGIN
>
> SELECT MAX(Ll.LINHA) FROM LLIVRODEPONTO Ll
>  WHERE Ll.IDUSER =:NEW_ID_USER
>         AND Ll.USLOGIN=CURRENT_USER
>         AND Ll.DTHRSVR=CURRENT_TIMESTAMP
>  INTO :NEW_LINHA;
>
>  IF (:NEW_LINHA IS NULL) THEN
>   NEW_LINHA = 1 ;
>  ELSE
>   NEW.LINHA =:NEW_LINHA + 1;
>
>   END
>
>
>
>
>
> END^
>
> SET TERM ; ^
> Onde me  perdi eu e em quê? Costuma funcionar sempre que não posso ter
> falhas na numeração Faturação por exemplo!?
> Estou a ficar maluco!
> Alguém pode ajudar-me? Obrigado
> Com os meus melhores cumprimentos
> Mário Agostinho Reis
> 919262146
>
> Esta mensagem contém informação de natureza confidencial e é
> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
> receber este email agradecemos que não o copie nem o reenvie e que nos
> notifique do ocorrido através do email de resposta.
>


Mais detalhes sobre a lista de discussão lista