Auto incremento, que não incrementa!

Firebird

13/11/2003

eu tenho o seginte script para gerar uma tabela e depois o generator e a trigger:

CREATE TABLE ESPECIALIDADE
(
CODIGO_ESPECIALIDADE INTEGER NOT NULL,
NOME_ESPECIALIDADE VARCHAR(30) NOT NULL,
PRIMARY KEY (CODIGO_ESPECIALIDADE)
);

CREATE GENERATOR ESPECIALIDADE_GEN;

SET TERM ^!;
CREATE TRIGGER SET_CODIGO_ESPECIALIDADE FOR ESPECIALIDADE
ACTIVE BEFORE INSERT POSITION 0 AS
BEGIN
NEW.CODIGO_ESPECIALIDADE = GEN_ID(ESPECIALIDADE_GEN,1);
END ^!
SET TERM ^!;

O que tem de errado, pois toda vez que eu tento inserir alguma coisa ele não preenche automaticamente o campo codigo_especialidade e da erro no comando insert.


Nocode

Nocode

Curtidas 0

Respostas

Afarias

Afarias

13/11/2003

O Interbase vai SIM preencher o campo (DA TABELA NO BANCO) com o valor incremental!! -- MAS, *nunca* irá preencher o ´campo´ (TField) no seu programa... não tem como!! O servidor cuida ´apenas´ do banco de dados, entende??

AUTO-INCREMENTO a nível de banco de dados não é uma boa abordágem quando vc precisa saber do código gerado na aplicação cliente -- no momento da inclusão!

Para estes casos, use os generators ´NO CLIENTE´ (nada de triggers), e.... bom, existem uma pá de mensagens sobre isso nestes fóruns, a citar::

http://delphiforum.icft.com.br/forum/viewtopic.php?t=27059&highlight=generator

http://delphiforum.icft.com.br/forum/viewtopic.php?t=26668&highlight=generator

http://delphiforum.icft.com.br/forum/viewtopic.php?t=23926&highlight=generator

http://delphiforum.icft.com.br/forum/viewtopic.php?t=23964&highlight=generator

http://delphiforum.icft.com.br/forum/viewtopic.php?t=22657&highlight=generator


T+


GOSTEI 0
POSTAR