Fórum Trigger, é possível? #45797
03/08/2004
0
Tentei fazer isto mas não consegui.
Obrigado,
Roberto
Tenil
Curtir tópico
+ 0Posts
03/08/2004
Afarias
create trigger {...}
as
declare variable temp_value integer;
begin
select campo_tal from alguma_tabela where codigo=new.codigo
into :temp_value;
new.algum_campo = temp_value;
end^
Gostei + 0
03/08/2004
Tenil
SET TERM ^ ; CREATE TRIGGER "CRIAR_PRESTACOES" FOR "CARNE" ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE contador SMALLINT; BEGIN SELECT NU_PRESTACOES FROM CARNE_TPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador; WHILE (contador > 0) DO BEGIN INSERT INTO CARNE_PRESTACOES (ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO) VALUES (new.ID_CARNE, NULL, NULL, contador, 0); contador = contador - 1; END END ^ COMMIT WORK ^ SET TERM ; ^
Ao meu ver este código está correto, mas quando mando executar ocorre o seguinte erro:
Estou usando o IB 6.5.
Obrigado
Gostei + 0
03/08/2004
Afarias
|SQL erro code= -204 Table unknown CARNE_TIPO
é pq a tabela CARNE_TIPO não existe! (e se vc reparar está escrito é CARNE_TPO e não CARNE_TIPO)
se vc usou aspas-duplas no nome da tabela na criação, deve sempre fazer referência a tabela usando as aspas-duplas, e respeitando maiúsculas e minúsculas! ex: select campo_tal from ´CARNE_TIPO´
no mais o código está OK
T+
Gostei + 0
03/08/2004
Suporte_denisfr
Select tb_cliente.cli_cod, tb_cliente.cli_nome
from tb_cliente
where tb_cliente.cli_id = (tabela_do_triger).cli_id;
Gostei + 0
03/08/2004
Tenil
Tisk, tisk, tisk...
Desculpe a vergonha que passei...
Li o código 1 milhão de vezes e não vi que a palavra estava errada.
Só que, infelizmente, ainda não funcionou.
Esta parte do código está correta?
SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador;
É assim mesmo que se atribui o valor à variável?
Gostei + 0
03/08/2004
Tenil
Não estou conseguindo atribuir o valor retornado à variável.
Tô ficando meio que DESESPERADO, saka?
Gostei + 0
03/08/2004
Afarias
o código está correto, mas vc tem q dizer o q não está dando certo para tentarmos chegar na solução
T+
Gostei + 0
03/08/2004
Tenil
SET TERM ^ ; CREATE TRIGGER "CRIAR_PRESTACOES" FOR "CARNE" ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE contador SMALLINT; BEGIN SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador; WHILE (contador > 0) DO BEGIN INSERT INTO CARNE_PRESTACOES (ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO) VALUES (new.ID_CARNE, NULL, NULL, contador, 0); contador = contador - 1; END END ^ COMMIT WORK ^ SET TERM ; ^
Gostei + 0
03/08/2004
Afarias
importante!
veja... quando um parâmetro ou variável é utilizado em um comando SQL ele deve vir precedido por dois-pontos ( : )
sendo assim, altere seu código para::
INSERT INTO CARNE_PRESTACOES
(ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO,
NU_PRESTACAO, IN_PAGO)
VALUES (new.ID_CARNE, NULL, NULL, [b:f12deee296][color=red:f12deee296]:[/color:f12deee296]contador[/b:f12deee296], 0);
T+
Gostei + 0
03/08/2004
Tenil
[b:4455c8b9dc]afarias[/b:4455c8b9dc], mais uma vez vc salvou a minha pele.
Espero um dia poder retribuir a ajuda.
Abraços,
Roberto
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)