Thread: Trigger for Truncate event
Hi,
Could any one please point me to TRUNCATE trigger PostgreSQL example?
Thanks,
Jignesh
In response to Jignesh Shah : > Hi, > > Could any one please point me to TRUNCATE trigger PostgreSQL example? > > Thanks, test=# create table jignesh (i int); CREATE TABLE test=*# create function trg_jignesh() returns trigger as $$begin raise notice 'in the function'; return new; end;$$ languageplpgsql; CREATE FUNCTION test=*# create trigger trg1 before truncate on jignesh for each statement execute procedure trg_jignesh(); CREATE TRIGGER test=*# create trigger trg2 after truncate on jignesh for each statement execute procedure trg_jignesh(); CREATE TRIGGER test=*# truncate jignesh ; NOTICE: in the function NOTICE: in the function TRUNCATE TABLE ROLLBACK, Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
Thanks Kretschmer. Could you tell me what "return new" meant for?
Thanks,
Jigensh
On Thu, Aug 27, 2009 at 12:47 PM, A. Kretschmer <andreas.kretschmer@schollglas.com> wrote:
In response to Jignesh Shah :> Hi,test=# create table jignesh (i int);
>
> Could any one please point me to TRUNCATE trigger PostgreSQL example?
>
> Thanks,
CREATE TABLE
test=*# create function trg_jignesh() returns trigger as $$begin raise notice 'in the function'; return new; end;$$ language plpgsql;
CREATE FUNCTION
test=*# create trigger trg1 before truncate on jignesh for each statement execute procedure trg_jignesh();
CREATE TRIGGER
test=*# create trigger trg2 after truncate on jignesh for each statement execute procedure trg_jignesh();
CREATE TRIGGER
test=*# truncate jignesh ;
NOTICE: in the function
NOTICE: in the function
TRUNCATE TABLE
ROLLBACK, Andreas
--
Andreas Kretschmer
Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
--
Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-novice
In response to Jignesh Shah : > Thanks Kretschmer. Could you tell me what "return new" meant for? A trigger function must return either NULL or a record/row value having exactly the structure of the table the trigger was fired for. Okay, in this case, you can also return NULL. NEW means the new record, but you need it only for row level triggers afaik. Regards, Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
Thanks Andreas, when I tried to create trigger it gives me error. Could you tell me what is wrong?
mydb=# CREATE TRIGGER truncate_trigger
mydb-# AFTER TRUNCATE ON mytable
mydb-# FOR EACH STATEMENT EXECUTE PROCEDURE my_test();
ERROR: syntax error at or near "TRUNCATE" at character 52
LINE 2: AFTER TRUNCATE ON mytable
mydb-# AFTER TRUNCATE ON mytable
mydb-# FOR EACH STATEMENT EXECUTE PROCEDURE my_test();
ERROR: syntax error at or near "TRUNCATE" at character 52
LINE 2: AFTER TRUNCATE ON mytable
Thanks,
Jignesh
On Thu, Aug 27, 2009 at 1:47 PM, A. Kretschmer <andreas.kretschmer@schollglas.com> wrote:
In response to Jignesh Shah :> Thanks Kretschmer. Could you tell me what "return new" meant for?A trigger function must return either NULL or a record/row value having
exactly the structure of the table the trigger was fired for. Okay, in
this case, you can also return NULL. NEW means the new record, but you
need it only for row level triggers afaik.
Regards, Andreas--
Andreas Kretschmer
Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
--
Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-novice
Jignesh Shah wrote on 27.08.2009 19:37: > Thanks Andreas, when I tried to create trigger it gives me error. Could > you tell me what is wrong? > > mydb=# CREATE TRIGGER truncate_trigger > mydb-# AFTER TRUNCATE ON mytable > mydb-# FOR EACH STATEMENT EXECUTE PROCEDURE my_test(); > ERROR: syntax error at or near "TRUNCATE" at character 52 > LINE 2: AFTER TRUNCATE ON mytable You are probably using a version prior to 8.4 You need 8.4 to create triggers for TRUNCATE Thomas
Hmm..you are correct.
Thanks.
On Thu, Aug 27, 2009 at 11:20 PM, Thomas Kellerer <spam_eater@gmx.net> wrote:
Jignesh Shah wrote on 27.08.2009 19:37:You are probably using a version prior to 8.4Thanks Andreas, when I tried to create trigger it gives me error. Could you tell me what is wrong?
mydb=# CREATE TRIGGER truncate_trigger
mydb-# AFTER TRUNCATE ON mytable
mydb-# FOR EACH STATEMENT EXECUTE PROCEDURE my_test();
ERROR: syntax error at or near "TRUNCATE" at character 52
LINE 2: AFTER TRUNCATE ON mytable
You need 8.4 to create triggers for TRUNCATE
Thomas
--Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-novice