Fórum dúvida sobre interbase #54255

15/12/2005

0

não estou conseguindo fazer o ´ cod_cliente´ que é uma chave primária, aceitar auto incremento... o q será que estou fazendo de errado...

[b:7a42310c0d][color=blue:7a42310c0d]Tópico movido por Vinicius2K:[/color:7a42310c0d][/b:7a42310c0d] [list:7a42310c0d][b:7a42310c0d][color=red:7a42310c0d][*:7a42310c0d]Fórum original: Delphi [/color:7a42310c0d][/b:7a42310c0d][/list:u:7a42310c0d] Peço que poste as mensagens nos grupos corretos, conforme orienta as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url]



Adelor Silva

Adelor Silva

Responder

Posts

15/12/2005

Edilcimar

mostre o código senão fica difícil


Responder

Gostei + 0

15/12/2005

Adelor Silva

este é o código da construção da tabela... na verdade é um programa para calculos em polegadas...

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 ...


Responder

Gostei + 0

15/12/2005

Edilcimar

ALTER TABLE DADOS ADD CONSTRAINT PK_COD_POL PRIMARY KEY (COD_POL);
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 ; ^


Responder

Gostei + 0

15/12/2005

Adelor Silva

Desculpa não ter colocado o código completo antes... mas ai vai ele...



/* 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 ;^


Responder

Gostei + 0

15/12/2005

Vinicius2k

Colega,

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+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar