Fórum dúvida sobre interbase #54255
15/12/2005
0
Adelor Silva
Curtir tópico
+ 0Posts
15/12/2005
Edilcimar
Gostei + 0
15/12/2005
Adelor Silva
CREATE TABLE ´DADOS´
(
´COD_POL´INTEGER NOT NULL,
´DESCR_POL´VARCHAR(15),
´MM_ALT_POL´FLOAT,
´MM_LARG_POL´FLOAT,
´PESO_POL´FLOAT,
´VALOR_POL´NUMERIC(15, 4),
CONSTRAINT ´DADOS_PRIMARY´ PRIMARY KEY (´COD_POL´)
);
SET TERM ^ ;
o ´COD_POL´ deveria ser auto incremento...
não sei que é bem este código que vc precisa ...
Gostei + 0
15/12/2005
Edilcimar
depois coloque
SET TERM ^ ;
CREATE TRIGGER AI_DADOS_COD_POL FOR DADOS ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.COD_POL IS NULL) THEN
NEW.COD_POL = GEN_ID(DADOS_COD_POL_GEN, 1);
END
^
SET TERM ; ^
Gostei + 0
15/12/2005
Adelor Silva
/* Table: DADOS, Owner: SYSDBA */
CREATE TABLE ´DADOS´
(
´COD_POL´INTEGER NOT NULL,
´DESCR_POL´VARCHAR(15),
´MM_ALT_POL´FLOAT,
´MM_LARG_POL´FLOAT,
´PESO_POL´FLOAT,
´VALOR_POL´NUMERIC(15, 4),
CONSTRAINT ´DADOS_PRIMARY´ PRIMARY KEY (´COD_POL´)
);
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER ´TRIG_DADOS_BI´ FOR ´DADOS´
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
IF(NEW.´COD_POL´ IS NULL) THEN NEW.´COD_POL´ = GEN_ID(´GEN_DADOS_COD_POL´, 1);
END
^
COMMIT WORK ^
SET TERM ;^
Gostei + 0
15/12/2005
Vinicius2k
Note que o Generator só é incrementado e COD_POL recebe seu valor se COD_POL for nulo.
Por este motivo, ele não pode receber nenhum valor na aplicação ou você deve alterar sua trigger retirando esta condição (IF NEW.COD_POL IS NULL THEN).
Se você retirar a condição, não importa o valor que lhe foi atribuído pela aplicação, seu valor será atribuído pela trigger.
Se você não retirar a condição, não pode dar a ele um valor na aplicação e, o TField correspondente a COD_POL no DataSet (ClientDataSet e DataSet, caso esteja usando a midas) deve ter a propriedade [b:a7be05b752]Required[/b:a7be05b752] setada para [b:a7be05b752]False[/b:a7be05b752].
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)