Duvidas em construir trigger -- ERRO
o objecto é sempre que houver alterações num produto, pretendo guardar historico e numerar esse historico para cada produto
tipo:
produto A tem versao 1,2, 3
produto B podera ter 1
....
Executei este código mas esta dando erro, O QUE ESTOU FAZENDO MAU
CREATE TRIGGER ´nometrigger´ FOR ´nometabela´
ACTIVE BEFORE UPDATE POSITION 0
as
DECLARE VARIABLE num integer;
BEGIN
if (NEW.PREUNIT=OLD.PREUNIT) then
BEGIN
.......
END
ELSE
BEGIN
/*este select retornaum valor, ou NULL caso a tabela esteja vazia*/
for SELECT max(versaoP) FROM historico where produto=OLD.PRODUTO and versao=0 group by versaoP INTO :num
do
begin
//se a tabela estiver vazia
if (:num is NULL) then
:num = 1 ;
//se ja existir versoes incrementa
else
:num = 1 + :num;
end
INSERT INTO
Historico (PRODUTO, QUANT, PREUNIT,VERSAO, versaoP)
VALUES
(OLD.PRODUTO,
OLD.QUANT,
OLD.PREUNIT,
0,
:num
);
END
END
Agradeci a ajuda :wink:
tipo:
produto A tem versao 1,2, 3
produto B podera ter 1
....
Executei este código mas esta dando erro, O QUE ESTOU FAZENDO MAU
CREATE TRIGGER ´nometrigger´ FOR ´nometabela´
ACTIVE BEFORE UPDATE POSITION 0
as
DECLARE VARIABLE num integer;
BEGIN
if (NEW.PREUNIT=OLD.PREUNIT) then
BEGIN
.......
END
ELSE
BEGIN
/*este select retornaum valor, ou NULL caso a tabela esteja vazia*/
for SELECT max(versaoP) FROM historico where produto=OLD.PRODUTO and versao=0 group by versaoP INTO :num
do
begin
//se a tabela estiver vazia
if (:num is NULL) then
:num = 1 ;
//se ja existir versoes incrementa
else
:num = 1 + :num;
end
INSERT INTO
Historico (PRODUTO, QUANT, PREUNIT,VERSAO, versaoP)
VALUES
(OLD.PRODUTO,
OLD.QUANT,
OLD.PREUNIT,
0,
:num
);
END
END
Agradeci a ajuda :wink:
Nilpedro
Curtidas 0
Respostas
Gandalf.nho
04/01/2006
Que erro dá? Ocorre ao compilar a trigger ou ao executá-la?
GOSTEI 0
Nilpedro
04/01/2006
Dá erro ao compilar
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 22, char 17.
:.
em que linha 22 é
if (:num is NULL) then
:num = 1 ; /*linha 22*/
else
:num = 1 + :num;
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 22, char 17.
:.
em que linha 22 é
if (:num is NULL) then
:num = 1 ; /*linha 22*/
else
:num = 1 + :num;
GOSTEI 0
Gandalf.nho
04/01/2006
Tire os : e veja se funciona.
GOSTEI 0
Nilpedro
04/01/2006
ja tinha tentado tirar :, mas tirei em todos. Mas se tirar : só antes dos =s funciona.
Bigado pela atenção :wink:
Bigado pela atenção :wink:
GOSTEI 0