Re: [oracle_br] Problema com tabelas mutante em trigger
Alexandre, Esperimente usar a clausula pragma AUTONOMOUS_TRANSACTION; Veja: DECLARE cursores variáveis pragma AUTONOMOUS_TRANSACTION; BEGIN FOR xx LOOP xx xx xx END LOOP; COMMIT; -- Este commit é obrigatório END; Vê se isso funciona... Abraço. Em 20/05/08, Alexandre Rocha Placido[EMAIL PROTECTED] escreveu: Estou com um problema para resolver com uma trigger só que não vai funcionar no normal porque o Orac Le irá reclamar de tabela mutante. O problema é o seguinte eu tenho numa mesma tabela pedido atacadista e pedido normal, queria testar quando vou gravar um pedido normal se um determinado atributo dele é o mesmo do pedido atacadista a que ele se refere. Não consigo fazer um select dentro de uma trigger porque vai dar o problema de tabela mutante. Alguém tem uma idéia de como criar um artifício que resolva este problema? Alexandre Rocha Placido image002Gerente de TI DITEC - Agrovale 74 3612-2900 87 8802-0474 [EMAIL PROTECTED] MSN: [EMAIL PROTECTED] P Ler aqui sem imprimir é mais legal e faz bem ao meio ambiente. [As partes desta mensagem que não continham texto foram removidas] -- == Carlos Amaral [EMAIL PROTECTED] [EMAIL PROTECTED] (55)(21) 9310-6104 Eduquemos as crianças, e não será necessário castigar os homens.
Re: [oracle_br] Problema com tabelas mutante em trigger
Você pode tentar resolver isso com PRAGMA AUTONOMOUS_TRANSACTION. Example 6-46 Declaring an Autonomous Trigger CREATE TABLE emp_audit ( emp_audit_id NUMBER(6), up_date DATE, new_sal NUMBER(8,2), old_sal NUMBER(8,2) ); CREATE OR REPLACE TRIGGER audit_sal AFTER UPDATE OF salary ON employees FOR EACH ROW DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN -- bind variables are used here for values INSERT INTO emp_audit VALUES( :old.employee_id, SYSDATE, :new.salary, :old.salary ); COMMIT; END; / Ela executará em uma transação separada! Alexandre Rocha Placido escreveu: Estou com um problema para resolver com uma trigger só que não vai funcionar no normal porque o Orac Le irá reclamar de tabela mutante. O problema é o seguinte eu tenho numa mesma tabela pedido atacadista e pedido normal, queria testar quando vou gravar um pedido normal se um determinado atributo dele é o mesmo do pedido atacadista a que ele se refere. Não consigo fazer um select dentro de uma trigger porque vai dar o problema de tabela mutante. Alguém tem uma idéia de como criar um artifício que resolva este problema? Alexandre Rocha Placido image002Gerente de TI DITEC - Agrovale 74 3612-2900 87 8802-0474 [EMAIL PROTECTED] mailto:aplacido%40agrovale.com MSN: [EMAIL PROTECTED] mailto:aplacido%40gmail.com P Ler aqui sem imprimir é mais legal e faz bem ao meio ambiente. [As partes desta mensagem que não continham texto foram removidas] -- Sds, Leonardo Rezende Analista Desenvolvedor [EMAIL PROTECTED]
Re: [oracle_br] Problema com tabelas mutante em trigger
Sua pergunta esta um pouco confusa, mas pelo que percebi vc tem uma trigger na tabela, e ela se auto atualiza, gerando o erro de tabela mutante, se for esse o seu caso basta criar uma view identica a tabela, e colocar a trigger na view, lembre-se que a trigger é instead of insert,update,delete on table for each row .. Exemplo: create table PEDIDO ( ID NUMBER, DESCR VARCHAR2(200) ); create or replace view vw_pedido as select ID,DESCR from pedido; create or replace trigger trg_vw_pedido instead of insert on vw_pedido for each row BEGIN insert into pedido(id,descr) values(:new.id,:new.descr); END; Dessa forma vc pode alterar a a view sem problemas. Um abraço. Em 20/05/08, Alexandre Rocha Placido [EMAIL PROTECTED] escreveu: Estou com um problema para resolver com uma trigger só que não vai funcionar no normal porque o Orac Le irá reclamar de tabela mutante. O problema é o seguinte eu tenho numa mesma tabela pedido atacadista e pedido normal, queria testar quando vou gravar um pedido normal se um determinado atributo dele é o mesmo do pedido atacadista a que ele se refere. Não consigo fazer um select dentro de uma trigger porque vai dar o problema de tabela mutante. Alguém tem uma idéia de como criar um artifício que resolva este problema? Alexandre Rocha Placido image002Gerente de TI DITEC - Agrovale 74 3612-2900 87 8802-0474 [EMAIL PROTECTED] aplacido%40agrovale.com MSN: [EMAIL PROTECTED] aplacido%40gmail.com P Ler aqui sem imprimir é mais legal e faz bem ao meio ambiente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Problema com tabelas mutante em trigger
Uma trigger serve para disparar uma ação sempre que houver um evento do tipo de alteração na tabela, além claro de triggers de auditoria, etc, se você quer apenas fazer uma consulta na tabela não é necessário usar trigger. talvez seja melhor vc criar uma função do tipo in, passando como parametro de entrada o valor do pedido e obtendo assim um valor de saida. Em 20/05/08, Alexandre Rocha Placido [EMAIL PROTECTED] escreveu: Para ter certeza que entendi as idéias que mandaram. TRIGGER PED_VENDA_TRG BEGIN SELECT * FROM PEDIDO_VENDA WHERE PED_CODIGO = :NEW.PED_ATACADISTA; + algumas instruções e testes END; Não quero fazer update na tabela, quero consultar uma outra linha desta mesma tabela para poder fazer algumas verificações. De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Usuário do Sistema Enviada em: terça-feira, 20 de maio de 2008 15:53 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Problema com tabelas mutante em trigger Sua pergunta esta um pouco confusa, mas pelo que percebi vc tem uma trigger na tabela, e ela se auto atualiza, gerando o erro de tabela mutante, se for esse o seu caso basta criar uma view identica a tabela, e colocar a trigger na view, lembre-se que a trigger é instead of insert,update,delete on table for each row .. Exemplo: create table PEDIDO ( ID NUMBER, DESCR VARCHAR2(200) ); create or replace view vw_pedido as select ID,DESCR from pedido; create or replace trigger trg_vw_pedido instead of insert on vw_pedido for each row BEGIN insert into pedido(id,descr) values(:new.id,:new.descr); END; Dessa forma vc pode alterar a a view sem problemas. Um abraço. Em 20/05/08, Alexandre Rocha Placido [EMAIL PROTECTED]aplacido.oracle%40gmail.com mailto:aplacido.oracle%40gmail.com aplacido.oracle%2540gmail.com escreveu: Estou com um problema para resolver com uma trigger só que não vai funcionar no normal porque o Orac Le irá reclamar de tabela mutante. O problema é o seguinte eu tenho numa mesma tabela pedido atacadista e pedido normal, queria testar quando vou gravar um pedido normal se um determinado atributo dele é o mesmo do pedido atacadista a que ele se refere. Não consigo fazer um select dentro de uma trigger porque vai dar o problema de tabela mutante. Alguém tem uma idéia de como criar um artifício que resolva este problema? Alexandre Rocha Placido image002Gerente de TI DITEC - Agrovale 74 3612-2900 87 8802-0474 [EMAIL PROTECTED] aplacido%40agrovale.com mailto: aplacido%40agrovale.com aplacido%2540agrovale.com aplacido%40agrovale.com MSN: [EMAIL PROTECTED] aplacido%40gmail.com mailto: aplacido%40gmail.com aplacido%2540gmail.com aplacido%40gmail.com P Ler aqui sem imprimir é mais legal e faz bem ao meio ambiente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Problema com tabelas mutante em trigger
Uma trigger serve para disparar uma ação sempre que houver algum tipo de alteração na tabela, além claro de triggers de auditoria, etc, se você quer apenas fazer uma consulta na tabela não é necessário usar trigger. Em 20/05/08, Alexandre Rocha Placido [EMAIL PROTECTED] escreveu: Para ter certeza que entendi as idéias que mandaram. TRIGGER PED_VENDA_TRG BEGIN SELECT * FROM PEDIDO_VENDA WHERE PED_CODIGO = :NEW.PED_ATACADISTA; + algumas instruções e testes END; Não quero fazer update na tabela, quero consultar uma outra linha desta mesma tabela para poder fazer algumas verificações. De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Usuário do Sistema Enviada em: terça-feira, 20 de maio de 2008 15:53 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Problema com tabelas mutante em trigger Sua pergunta esta um pouco confusa, mas pelo que percebi vc tem uma trigger na tabela, e ela se auto atualiza, gerando o erro de tabela mutante, se for esse o seu caso basta criar uma view identica a tabela, e colocar a trigger na view, lembre-se que a trigger é instead of insert,update,delete on table for each row .. Exemplo: create table PEDIDO ( ID NUMBER, DESCR VARCHAR2(200) ); create or replace view vw_pedido as select ID,DESCR from pedido; create or replace trigger trg_vw_pedido instead of insert on vw_pedido for each row BEGIN insert into pedido(id,descr) values(:new.id,:new.descr); END; Dessa forma vc pode alterar a a view sem problemas. Um abraço. Em 20/05/08, Alexandre Rocha Placido [EMAIL PROTECTED]aplacido.oracle%40gmail.com mailto:aplacido.oracle%40gmail.com aplacido.oracle%2540gmail.com escreveu: Estou com um problema para resolver com uma trigger só que não vai funcionar no normal porque o Orac Le irá reclamar de tabela mutante. O problema é o seguinte eu tenho numa mesma tabela pedido atacadista e pedido normal, queria testar quando vou gravar um pedido normal se um determinado atributo dele é o mesmo do pedido atacadista a que ele se refere. Não consigo fazer um select dentro de uma trigger porque vai dar o problema de tabela mutante. Alguém tem uma idéia de como criar um artifício que resolva este problema? Alexandre Rocha Placido image002Gerente de TI DITEC - Agrovale 74 3612-2900 87 8802-0474 [EMAIL PROTECTED] aplacido%40agrovale.com mailto: aplacido%40agrovale.com aplacido%2540agrovale.com aplacido%40agrovale.com MSN: [EMAIL PROTECTED] aplacido%40gmail.com mailto: aplacido%40gmail.com aplacido%2540gmail.com aplacido%40gmail.com P Ler aqui sem imprimir é mais legal e faz bem ao meio ambiente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]