Olá, George
Fiz um exemplo bem simples.
Derrepente ajude.
CREATE TABLE exemplo1(codigo int,nome text);
CREATE TABLE exemplo2(codigo_modif int,data_hora timestamp);
CREATE OR REPLACE FUNCTION exemplo_trigger()
RETURNS trigger AS $exemplo_trigger$
BEGIN
INSERT INTO exemplo2 VALUES (NEW.codigo,current_date);
RETURN NEW;
END;
$exemplo_trigger$ LANGUAGE PLPGSQL;
CREATE TRIGGER exemplo_trigger
BEFORE INSERT ON exemplo1
FOR EACH ROW EXECUTE PROCEDURE exemplo_trigger();
postgres=# SELECT * FROM exemplo1;
codigo | nome
--------+------
(0 rows)
postgres=# SELECT * FROM exemplo2;
codigo_modif | data_hora
--------------+-----------
(0 rows)
INSERT INTO exemplo1 VALUES (1,'Jota');
postgres=# SELECT * FROM exemplo1;
codigo | nome
--------+------
1 | Jota
(1 row)
postgres=# SELECT * FROM exemplo2;
codigo_modif | data_hora
--------------+---------------------
1 | 2009-01-27 00:00:00
(1 row)
Agora desabilito a trigger.
ALTER TABLE exemplo1 DISABLE TRIGGER exemplo_trigger;
postgres=# INSERT INTO exemplo1 VALUES (2,'Joao Paulo');
INSERT 0 1
postgres=# SELECT * FROM exemplo1;
codigo | nome
--------+------------
1 | Jota
2 | Joao Paulo
(2 rows)
postgres=# SELECT * FROM exemplo2;
codigo_modif | data_hora
--------------+---------------------
1 | 2009-01-27 00:00:00
(1 row)
Habilitando a trigger novamente.
postgres=# ALTER TABLE exemplo1 ENABLE TRIGGER exemplo_trigger;
ALTER TABLE
postgres=# INSERT INTO exemplo1 VALUES (3,'JotaPe');
INSERT 0 1
postgres=# SELECT * FROM exemplo1;
codigo | nome
--------+------------
1 | Jota
2 | Joao Paulo
3 | JotaPe
(3 rows)
postgres=# SELECT * FROM exemplo2;
codigo_modif | data_hora
--------------+---------------------
1 | 2009-01-27 00:00:00
3 | 2009-01-27 00:00:00
(2 rows)
Desabilitando o trigger para o usuário.
postgres=# SELECT user;
current_user
--------------
postgres
(1 row)
postgres=# ALTER TABLE exemplo1 DISABLE TRIGGER USER;
ALTER TABLE
postgres=# INSERT INTO exemplo1 VALUES (4,'Teste');
INSERT 0 1
postgres=# SELECT * FROM exemplo1;
codigo | nome
--------+------------
1 | Jota
2 | Joao Paulo
3 | JotaPe
4 | Teste
(4 rows)
postgres=# SELECT * FROM exemplo2;
codigo_modif | data_hora
--------------+---------------------
1 | 2009-01-27 00:00:00
3 | 2009-01-27 00:00:00
(2 rows)
Habilitando novamente a trigger para o usuário.
postgres=# ALTER TABLE exemplo1 ENABLE TRIGGER USER;
ALTER TABLE
postgres=# SELECT * FROM exemplo1;
codigo | nome
--------+------------
1 | Jota
2 | Joao Paulo
3 | JotaPe
4 | Teste
5 | PostgreSQL
(5 rows)
postgres=# SELECT * FROM exemplo2;
codigo_modif | data_hora
--------------+---------------------
1 | 2009-01-27 00:00:00
3 | 2009-01-27 00:00:00
5 | 2009-01-27 00:00:00
(3 rows)
Espero ter ajudado.
[]s
2009/1/27 Jota <[email protected]>:
> Olá, George
>
> Você pode postar o código do trigger e também explicar como você
> executou o procedimento?
>
> []s
>
> 2009/1/27 George <[email protected]>:
>> Bom dia,
>>
>> Faço um atualização diária no banco para somente testes conforme segue
>> abaixo :
>>
>> alter table financeiro.t1_cab disable trigger user;
>> update financeiro.t1_cab t3 set gds = (select t2.gds from t2_cab t1 inner
>> join gds_cab t2 on t2.gds = t1.gds where t1.tmv = t3.dsp limit 1);
>> alter table financeiro.t1_cab enable trigger user;
>>
>> Infelizmente ao tentar executar o update acabou executando a trigger da
>> tabela financeiro.t1_cab, para ter certeza coloquei um Raise Notice na
>> rotina;
>>
>> NOTICE: teste
>> NOTICE: teste
>> NOTICE: teste
>> NOTICE: teste
>>
>> Query returned successfully: 309263 rows affected, 93365 ms execution time.
>>
>> Como pode observar foi atualizado 309263 registros,mas registrou 4 linhas
>> que executou a trigger.
>>
>> Tb tentei com "disable trigger all". Utilizo a versao 8.2.
>>
>> O que fiz de errado ???
>>
>> Desde já agradeço
>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
>
> --
> João Paulo
> www.dextra.com.br/postgres
> PostgreSQL
>
--
João Paulo
www.dextra.com.br/postgres
PostgreSQL
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral