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...........
quem puder me ajudar eu fico muito agradecido...........
Rmc
Curtir tópico
+ 0
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+
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
Clique aqui para fazer login e interagir na Comunidade :)