Re: [SQL] Rules and sequences
In response to Tom Lane : Ben Morrow b...@morrow.me.uk writes: I am trying to implement a fairly standard 'audit table' setup, but using rules instead of triggers (since it should be more efficient). Rules are sufficiently tricky that I would never, ever rely on them for auditing. Use a simple AFTER trigger instead. There are a ready solution: http://andreas.scherbaum.la/blog/archives/100-Log-Table-Changes-in-PostgreSQL-with-tablelog.html Regards, Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: - Header) GnuPG: 0x31720C99, 1006 CCB4 A326 1D42 6431 2EB0 389D 1DC2 3172 0C99 -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] Rules and sequences
Quoth t...@sss.pgh.pa.us (Tom Lane): Ben Morrow b...@morrow.me.uk writes: I am trying to implement a fairly standard 'audit table' setup, but using rules instead of triggers (since it should be more efficient). Rules are sufficiently tricky that I would never, ever rely on them for auditing. Use a simple AFTER trigger instead. OK, thanks. Ben -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
[SQL] Rules and sequences
I am trying to implement a fairly standard 'audit table' setup, but using rules instead of triggers (since it should be more efficient). However, I'm running into problems when one of the audited tables has a 'serial' column that is allowed to default: create table foo (id serial, bar text); create table audit (ix bigserial, rec text); create rule audit_insert as on insert to foo do also insert into audit (rec) values ((new.*)::text); insert into foo (bar) values ('baz'); select * from foo; id | bar +- 1 | baz (1 row) select * from audit; ix | rec +- 1 | (2,baz) (1 row) I can see why this is happening (the rule is essentially a macro, so the NEW expression gets expanded twice, including the nextval call, so the sequence is incremented twice), but is there any way to prevent it? Some way of 'materialising' the NEW row so it is just plain values rather than a list of expressions? Ben -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] Rules and sequences
Ben Morrow b...@morrow.me.uk writes: I am trying to implement a fairly standard 'audit table' setup, but using rules instead of triggers (since it should be more efficient). Rules are sufficiently tricky that I would never, ever rely on them for auditing. Use a simple AFTER trigger instead. regards, tom lane -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql