sobre Trigger
Essa trigger:
AS
declare variable autoinc integer;
begin
select max(codgrup)as cod from grupos into autoinc;
if (autoinc is null) then
autoinc = 0;
autoinc = grupos.codgrup + 1;
new.codgrup = autoinc;
end
Trigger Before Insert, mas quando dispara dá a mensagem que o codgrup não tem valor. O que está errado?
AS
declare variable autoinc integer;
begin
select max(codgrup)as cod from grupos into autoinc;
if (autoinc is null) then
autoinc = 0;
autoinc = grupos.codgrup + 1;
new.codgrup = autoinc;
end
Trigger Before Insert, mas quando dispara dá a mensagem que o codgrup não tem valor. O que está errado?
Amilton/pr
Curtidas 0
Respostas
Gandalf.nho
12/07/2004
Nesse caso não seria mais fácil usar generator?
GOSTEI 0
Amilton/pr
12/07/2004
Realmente. vou usar Generator, mas em caso de trigger, com seria uma trigger pra incrementar um valor num campo numérico?
GOSTEI 0
Afarias
12/07/2004
o erro da sua trigger está aqui::
autoinc = grupos.codgrup + 1;
deveria ser
autoinc = autoinc + 1;
no mais, o correto realmente é usar um generator, e ficaria assim::
new.codgrup = gen_id(generator, 1);
T+
autoinc = grupos.codgrup + 1;
deveria ser
autoinc = autoinc + 1;
no mais, o correto realmente é usar um generator, e ficaria assim::
new.codgrup = gen_id(generator, 1);
T+
GOSTEI 0
Amilton/pr
12/07/2004
Blz., mas por que sei que o valor do codgrup(codigo do grupo) vai ser acrescentado de +1? Onde a variável pega o maior valor pra somar com 1?
Desculpem . . . é a primeira vez que faço uma trigger!
Desculpem . . . é a primeira vez que faço uma trigger!
GOSTEI 0
Gandalf.nho
12/07/2004
Generator nada mais é do que um tipo de ´variável´ armazenada no banco que guarda um número inteiro. A função GEN_ID usada na trigger incrementa o valor da generator pelo número declarado na função.
GOSTEI 0
Amilton/pr
12/07/2004
Entendi, mas quero saber numa trigger before Insert, como eu pego o maior valor de um campo numérico e acrescento +1 pra gravar o registro, como se fosse auto incremento . . .
GOSTEI 0
Afarias
12/07/2004
>> select max(codgrup) from grupos into :autoinc;
o código acima pega o maior valor do campo codgrup na tabela grupos e joga na variável autoinc
>> autoinc = autoinc + 1;
Aqui o valor de autoinc é acrescido de 1
>> new.codgrup = autoinc;
Aqui, o campo codgrupo no registro sendo inserido ou atualizado recebe o valor da variável autoinc
T+
o código acima pega o maior valor do campo codgrup na tabela grupos e joga na variável autoinc
>> autoinc = autoinc + 1;
Aqui o valor de autoinc é acrescido de 1
>> new.codgrup = autoinc;
Aqui, o campo codgrupo no registro sendo inserido ou atualizado recebe o valor da variável autoinc
T+
GOSTEI 0