GARANTIR DESCONTO

Fórum Problema com DELETE e Triggers #26995

03/12/2008

0

Salve Pessoal,

Estou tentando entender uns exemplos de trigger da SQLMagazine, edição 20, mas está acontecendo algo estranho. A tabela sobre a qual as funções e o trigger estão sendo criados é:

CREATE TABLE emp (
   n_emp integer, 
   nome_emp varchar(30), 
   cargo varchar(10),
   chefe integer,
   data_adm date,
   sal numeric(10,2),
   com numeric(10,2),
   n_dep integer
)
WITHOUT OIDS; 
ALTER TABLE emp ADD CONSTRAINT emp_PK PRIMARY KEY (n_emp);


A função de trigger é:

CREATE OR REPLACE FUNCTION ArgFunc() 
   RETURNS TRIGGER AS ´
DECLARE
   arg integer;
BEGIN
   arg := TG_ARGV[0];
   IF arg = 1 THEN
      RAISE NOTICE
         ´´O trigger ArgEx1 chamou a função.´´;
   ELSE
      RAISE NOTICE
         ´´O trigger ArgEx2 chamou a função.´´;
   END IF;
RETURN NEW;
END;
´ LANGUAGE plpgsql;



E o trigger é:

CREATE TRIGGER ArgEx1
   BEFORE DELETE
ON emp FOR EACH ROW
EXECUTE PROCEDURE ArgFunc(1);


O problema é que quando o trigger está ativo eu não consigo apagar uma linha da tabela... Sempre que a apago e atualizo ela ainda está lá...

Alguém tem alguma idéia do que possa ser? Obrigado,

celso


Jcfreire

Jcfreire

Responder

Posts

04/12/2008

Jair Bg

Altere sua trigger para: ´FOR EACH ROW para ´STATEMENT´, veja resultado se é o que voce pretende!!

DROP TRIGGER argex1 ON emp;

CREATE TRIGGER ArgEx1
BEFORE DELETE
ON emp FOR EACH STATEMENT
EXECUTE PROCEDURE ArgFunc(1);


Responder

Gostei + 0

02/10/2009

Pedroviol

Acredito que seje o Return New;
Se está deletando tem q dar Return old;
Espero ter ajudado;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar