Trigger, é possível?
Tem, jeito de fazer um select, que retorna apenas um valor, numa tabela diferente da que o trigger está vinculado, e atribuir este valor a uma variável e usá-lo?
Tentei fazer isto mas não consegui.
Obrigado,
Roberto
Tentei fazer isto mas não consegui.
Obrigado,
Roberto
Tenil
Curtidas 0
Respostas
Afarias
03/08/2004
sim... ex::
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
Tenil
03/08/2004
AFARIAS, olha só como ficou o código:
Ao meu ver este código está correto, mas quando mando executar ocorre o seguinte erro:
Estou usando o IB 6.5.
Obrigado
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:
SQL erro code= -204
Table unknown
CARNE_TIPO
Estou usando o IB 6.5.
Obrigado
GOSTEI 0
Afarias
03/08/2004
|mas quando mando executar ocorre o seguinte erro:
|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+
|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
Suporte_denisfr
03/08/2004
Tem sim, basta você fazer um select comum, fazendo referencia a tabela:
Select tb_cliente.cli_cod, tb_cliente.cli_nome
from tb_cliente
where tb_cliente.cli_id = (tabela_do_triger).cli_id;
Select tb_cliente.cli_cod, tb_cliente.cli_nome
from tb_cliente
where tb_cliente.cli_id = (tabela_do_triger).cli_id;
GOSTEI 0
Tenil
03/08/2004
:oops: :oops: :oops: :oops: :oops: :oops:
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?
É assim mesmo que se atribui o valor à variável?
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
Tenil
03/08/2004
[b:4718945093]suporte_denisfr[/b:4718945093], valeu pela dica, só que o problema é o seguinte, preciso usar o valor para vazer o loop.
Não estou conseguindo atribuir o valor retornado à variável.
Tô ficando meio que DESESPERADO, saka?
Não estou conseguindo atribuir o valor retornado à variável.
Tô ficando meio que DESESPERADO, saka?
GOSTEI 0
Afarias
03/08/2004
|Esta parte do código está correta?
o código está correto, mas vc tem q dizer o q não está dando certo para tentarmos chegar na solução
T+
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
Tenil
03/08/2004
Mano, vou transcrever o erro, ok?
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 ; ^
Error at line 2 - Dynamic SQL Error
SQL error code = -206
Column unknown
CONTADOR
GOSTEI 0
Afarias
03/08/2004
|Mano, vou transcrever o erro, ok?
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+
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
Tenil
03/08/2004
Funcionou!
[b:4455c8b9dc]afarias[/b:4455c8b9dc], mais uma vez vc salvou a minha pele.
Espero um dia poder retribuir a ajuda.
Abraços,
Roberto
[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