A maneira como você está criando a trigger está errada. Veja: ===========================================================================================
SQL> create table teste_trigger( COD_PRODUTO NUMBER(10,0) 2 , 3 DES_PRODUTO VARCHAR2(30) 4 , DT_ATUALIZACAO DATE 5 ,DT_INSERCAO DATE 6 ) 7 ; Table created. SQL> CREATE OR REPLACE TRIGGER trigger_upd 2 AFTER UPDATE 3 ON teste_trigger 4 REFERENCING NEW AS NEW OLD AS OLD 5 FOR EACH ROW 6 BEGIN 7 UPDATE teste_trigger 8 SET dt_atualizacao = SYSDATE 9 WHERE cod_produto = :OLD.cod_produto; 10 END; 11 / Trigger created. SQL> SQL> insert into teste_trigger (COD_PRODUTO,DES_PRODUTO) values (1,'x'); 1 row created. SQL> select * from teste_trigger; COD_PRODUTO DES_PRODUTO DT_ATUALIZACAO DT_INSERCAO ----------- ------------------------------ ----------------- ----------------- 1 x 1 row selected. SQL> update teste_trigger set DES_PRODUTO='y' where COD_PRODUTO=1; update teste_trigger set DES_PRODUTO='y' where COD_PRODUTO=1 * ERROR at line 1: ORA-04091: a tabela TESTE_TRIGGER é mutante; talvez o gatilho/função não possa localizá-la ORA-06512: em "TRIGGER_UPD", line 2 ORA-04088: erro durante a execução do gatilho 'TRIGGER_UPD' SQL> CREATE OR REPLACE TRIGGER trigger_upd 2 BEFORE UPDATE 3 ON teste_trigger 4 REFERENCING NEW AS NEW OLD AS OLD 5 FOR EACH ROW 6 BEGIN 7 :NEW.DT_ATUALIZACAO := sysdate; 8 END; 9 / Trigger created. SQL> SQL> update teste_trigger set DES_PRODUTO='y' where COD_PRODUTO=1; 1 row updated. SQL> select * from teste_trigger; COD_PRODUTO DES_PRODUTO DT_ATUALIZACAO DT_INSERCAO ----------- ------------------------------ ----------------- ----------------- 1 y 24-AGO-2006 09:53 1 row selected. =========================================================================================== Veja que na trigger eu troquei o evento por BEFORE UPDATE, e ao invés de um UPDATE, simplesmente disse que o valor novo é SYSDATE. []s Eduardo Claro -----Original Message----- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Léo Vieira Sent: Thursday, August 24, 2006 8:42 AM To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Trigger de atualização e inserção. Bom dia Grupo, tenho a seguinte tabela de teste: NAME Null? Type ------------------------------- --------- ----- COD_PRODUTO NOT NULL NUMBER(10,0) DES_PRODUTO NOT NULL VARCHAR2(30) DT_ATUALIZACAO DATE DT_INSERCAO DATE Quero criar duas triggers que façam o seguinte: 1 - Ao atualizar o registro é colocado sysdate na coluna DT_ATUALIZACAO 2 - Ao inserir um registro é colocado sysdate nas colunas DT_ATUALIZACAO e DT_INSERCAO. Criei a seguinte trigger para UPDATE: CREATE OR REPLACE TRIGGER trigger_upd AFTER UPDATE ON teste_trigger REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN UPDATE teste_trigger SET dt_atualizacao = SYSDATE WHERE cod_produto = :OLD.cod_produto; END; / Porém quando atualizo registro nada acontece, o que tem de errado? E para alterar a trigger para fazer a de inserção? Obrigado a todos Leonardo Baliano -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html