Firebird com IBExpert

Firebird

21/01/2005

Olá pessoal, instalei o Firebird e o IBExpert, criei a seguinte tabela:

CREATE TABLE ´TBCLIENTE´
(
´CODCLIENTE´INTEGER NOT NULL,
´NOME´VARCHAR(50),
´LOGRADOURO´VARCHAR(70),
´BAIRRO´VARCHAR(30),
´CEP´CHAR(10),
´CIDADE´VARCHAR(30),
´UF´CHAR(2),
´TELEFONE´CHAR(10),
´CELULAR´CHAR(10),
´FAX´CHAR(10),
´EMAIL´VARCHAR(40),
CONSTRAINT ´PK_TBCLIENTE´ PRIMARY KEY (´CODCLIENTE´)
);


SET TERM ^ ;
CREATE TRIGGER ´TRIG_CLIENTE´ FOR ´TBCLIENTE´
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.CODCLIENTE IS NULL) THEN
NEW.CODCLIENTE = GEN_ID(GEN_CODCLIENTE,1);
END
^
COMMIT WORK ^
SET TERM ;^

SET TERM ^ ;

CREATE PROCEDURE ´PROCED_GEN_CODCLIENTE´
RETURNS
(
´ID´ INTEGER
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE ´PROCED_GEN_CODCLIENTE´
RETURNS
(
´ID´ INTEGER
)
AS
BEGIN
ID = GEN_ID(GEN_CODCLIENTE, 1);
SUSPEND;
END
^
SET TERM ; ^

CREATE GENERATOR ´GEN_CODCLIENTE´;
SET GENERATOR ´GEN_CODCLIENTE´ TO 1;

Quando tento inseri um registro pelo IB Expert na minha tbCliente em Data ele da o seguinte erro:

Error Message:
----------------------------------------
The insert failed because a column definition includes validation constraints.
validation error for column CODCLIENTE, value ´*** null ***´.

Alguém poderia solucionar esse problema? ou só vou conseguir inseri registro se for pelo Delphi?


Anonymous

Anonymous

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

21/01/2005

A ordem de Criação da Trigger e do Generator esta invertida!
Mas se os dois estão realmente criados na sua base, a inserção de registros irá funcionar sem problemas, uma vez que a ´Trigger Before Insert´ se encarrega de preencher o campo CODCLIENTE, causador da mensagem!

Logo...

CREATE TABLE "TBCLIENTE" 
(
  "CODCLIENTE"INTEGER NOT NULL,
  "NOME"VARCHAR(50),
  "LOGRADOURO"VARCHAR(70),
  "BAIRRO"VARCHAR(30),
  "CEP"CHAR(10),
  "CIDADE"VARCHAR(30),
  "UF"CHAR(2),
  "TELEFONE"CHAR(10),
  "CELULAR"CHAR(10),
  "FAX"CHAR(10),
  "EMAIL"VARCHAR(40),
CONSTRAINT "PK_TBCLIENTE" PRIMARY KEY ("CODCLIENTE")
);

CREATE GENERATOR "GEN_CODCLIENTE";
SET GENERATOR "GEN_CODCLIENTE" TO 1;

SET TERM ^ ;
CREATE TRIGGER "TRIG_CLIENTE" FOR "TBCLIENTE" 
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODCLIENTE IS NULL) THEN
    NEW.CODCLIENTE = GEN_ID(GEN_CODCLIENTE,1);
END
 ^
COMMIT WORK ^
SET TERM ;^

SET TERM ^ ;

CREATE PROCEDURE "PROCED_GEN_CODCLIENTE" 
RETURNS
(
  "ID" INTEGER
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "PROCED_GEN_CODCLIENTE" 
RETURNS
(
  "ID" INTEGER
)
AS
BEGIN
  ID = GEN_ID(GEN_CODCLIENTE, 1);
  SUSPEND;
END
 ^
SET TERM ; ^



GOSTEI 0
POSTAR