Fórum URGENTE!!! Auto Incremente em InterBase #165224

07/06/2003

0

Olá pessoal gostária de saber como criar um trigger para gerar uma chave de uma tabela no IB6, pois não consigo fazer isso e notei o seguinte se eu tirar a chave primaria na minha tabela ele funcionara normalmente com o trigger e acrescentará os números corretamente na tabela..... mas se coloco a chave primaria no campo da tabela que estou incrementando com trigger não consigo mais fazer isso e toda vez que eu vou salvar um registro ele diz que o campo que está como chave primaria não pode ser nulo......

quem puder me ajudar eu fico muito agradecido...........


Rmc

Rmc

Responder

Posts

07/06/2003

Centopocento

Rafael,

Quando vc cria uma tabela com tigger que irá inclementar este campo vc não pode incluir dados no mesmo, o próprio IB se encarrega disto.
Vc deve criar a tabela como o exemplo abaixo.

1. Criar a Tabela com uma chave primária;

CREATE TABLE ´CAD_APELIDO´
(
´SEQ_APELIDO´ INTEGER,
´NOM_APELIDO´ VARCHAR(20),
PRIMARY KEY (´SEQ_APELIDO´)
)

2. Criar um Generator, na realidade uma variável para acumular o valor

CREATE GENERATOR ´GEN_APELIDO´;

3. Criar o Tigger (gatilho) que será disparado qdo um registro for incluído na tabela.
Notas:
3.1 O Alias (NEW) indica que vc esta tabalhando com o novo registro;
3.2 ´POSITION 0´ é a posição, seqüência de disparro, do Tigger, neste caso 0 (zero);
3.3 GEN_ID é uma função que manioula o Generator, o 1o. parametro é o nome do generator o segundo é o valor a ser inclementado, se este for positivo, ou declementado se for negativo. se o Valor for 0 (zero) ele exibe o valor atual;

CREATE TRIGGER ´TIG_APELIDO´ FOR ´CAD_APELIDO´
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.SEQ_APELIDO = GEN_ID(GEN_APELIDO,1);
END


Acho que é isto que vc pediu. Se não perdoe, mas pelo menos tentei.

T+


Responder

Gostei + 0

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

Aceitar