[firebase-br] Problemas com AutoIncrement e INSERT

Andrei Luís compuvale.software em gmail.com
Qui Jun 29 13:01:21 -03 2006


Osvaldo,

O problema é que vocês está atribuindo um valor default = 0 para o
campo id_midia, a trigger só vai attribuir o valor do generator + 1 se
o campos estiver null veja esse trecho do código que você passou:

IF (NEW.ID_MIDIA IS NULL) THEN
    NEW.ID_MIDIA = GEN_ID(GEN_TB_MIDIA_ID,1);

Você tem duas saídas:

- tirar o valor default da campo id_midia

ou

- alterar a trigger assim:
IF (NEW.ID_MIDIA = 0) THEN
    NEW.ID_MIDIA = GEN_ID(GEN_TB_MIDIA_ID,1);

[]
Andrei


Em 29/06/06, Osvaldo<cslinf em uol.com.br> escreveu:
> Aqui vai o texto pelo IB EXPERT, tudo foi criado direito, pelo menos eu acho
>
> Osvaldo P.G.U.
>
> ================================================================
>
>
> CREATE GENERATOR GEN_TB_MIDIA_ID;
>
> CREATE TABLE TB_MIDIA (
>    ID_MIDIA  DM_INTEIRO NOT NULL /* DM_INTEIRO = INTEGER DEFAULT 0 */,
>    DS_MIDIA  DM_VC40 /* DM_VC40 = VARCHAR(40) */,
>    CD_MIDIA  DM_CH02 /* DM_CH02 = CHAR(2) */
> );
>
>
>
>
> /***************************************************************************
> ***/
> /***                              Primary Keys
> ***/
> /***************************************************************************
> ***/
>
> ALTER TABLE TB_MIDIA ADD CONSTRAINT PK_TB_MIDIA PRIMARY KEY (ID_MIDIA);
>
>
> /***************************************************************************
> ***/
> /***                                Triggers
> ***/
> /***************************************************************************
> ***/
>
>
> SET TERM ^ ;
>
>
> /***************************************************************************
> ***/
> /***                          Triggers for tables
> ***/
> /***************************************************************************
> ***/
>
>
>
> /* Trigger: TB_MIDIA_BI */
> CREATE TRIGGER TB_MIDIA_BI FOR TB_MIDIA
> ACTIVE BEFORE INSERT POSITION 0
> AS
> BEGIN
>  IF (NEW.ID_MIDIA IS NULL) THEN
>    NEW.ID_MIDIA = GEN_ID(GEN_TB_MIDIA_ID,1);
> END
> ^
>
>
> SET TERM ; ^




Mais detalhes sobre a lista de discussão lista