Codigo automatico e sequencial
Gostaria de fazer um cadastro de aluno. Mas não sei como fazer com que o código do aluno seja gerado automaticamento e sequencialmente.
Estou usando o bando InterBase e para fazer a conexao com o delphi uso os componentes da paleta DBExpress.
Agradeço desde já
:)
Estou usando o bando InterBase e para fazer a conexao com o delphi uso os componentes da paleta DBExpress.
Agradeço desde já
:)
_celo
Curtidas 0
Respostas
Gandalf.nho
09/12/2004
A maneira mais fácil e simples é usar generators em conjunto ou não com triggers.
GOSTEI 0
_celo
09/12/2004
No InterBase né? Mas como faço isso?
Vc tem algum exemplo? obrigado.
Vc tem algum exemplo? obrigado.
GOSTEI 0
Gandalf.nho
09/12/2004
Você deve criar um generator com o comando:
CREATE GENERATOR nome_generator.
Uma das maneiras mais comuns de associar o generator ao campo Integer que deverá ser incrementado é via trigger, assim:
CREATE TRIGGER nome_trigger FOR nome_tabela
BEFORE INSERT
AS
BEGIN
IF (NEW.nome_campo IS NULL) THEN
NEW.nome_campo = GEN_ID(nome_generator, 1);
END
END
CREATE GENERATOR nome_generator.
Uma das maneiras mais comuns de associar o generator ao campo Integer que deverá ser incrementado é via trigger, assim:
CREATE TRIGGER nome_trigger FOR nome_tabela
BEFORE INSERT
AS
BEGIN
IF (NEW.nome_campo IS NULL) THEN
NEW.nome_campo = GEN_ID(nome_generator, 1);
END
END
GOSTEI 0
_celo
09/12/2004
Legal!! Fiz um Generator e funcionou muito bem, Mas so que agora acontecue mas um pequeno probleminha é pq naum sei como zerar o Generator. Alguem pode diria me ajudar?
Agradeço desde já!
Agradeço desde já!
GOSTEI 0
Gandalf.nho
09/12/2004
SET GENERATOR nome_generator TO 0
GOSTEI 0
_celo
09/12/2004
Obrigado me servio bastante :)
GOSTEI 0
$grandaum$
09/12/2004
tipo essa trigger naum esta rodando....eu naum manjo muito de interbase mas ajh criei o generator jah dei o valor inicial pra ele de 500 e quando mando rodar a trigger estah dando o seguinte erro
Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1)
Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1)
GOSTEI 0
Gandalf.nho
09/12/2004
Você colocou os END no final?
GOSTEI 0
$grandaum$
09/12/2004
sim
GOSTEI 0
$grandaum$
09/12/2004
CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1);
END
END
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1);
END
END
GOSTEI 0
Gandalf.nho
09/12/2004
Tente usar o SET TERM, assim:
SET TERM ^;
CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1);
END
END ^
SET TERM ;^
SET TERM ^;
CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1);
END
END ^
SET TERM ;^
GOSTEI 0
$grandaum$
09/12/2004
Tente usar o SET TERM, assim:
SET TERM ^;
CREATE TRIGGER inc FOR cad_emp
BEFORE INSERT
AS
BEGIN
IF (NEW.cod_emp IS NULL) THEN
NEW.cod_emp = GEN_ID(incrementa, 1);
END
END ^
SET TERM ;^
consegui resolver o problema de tanto ler esse trecho ......rh apenas tirar o 1º end do final
GOSTEI 0
$grandaum$
09/12/2004
mesmo assim vlw gandalf.nho pela força ....
GOSTEI 0
Gandalf.nho
09/12/2004
Ops, não tinha percebido que havia colocado um END a mais, desculpe...
GOSTEI 0