I have this database and it was working with PG 7.1.2 !!! When I try to delete a record the trigger is fired but the delete is not executed.
---------------------------------------code start here drop database test_trig; create database test_trig; \connect test_trig -- -- TOC Entry ID 2 (OID 81843) -- -- Name: client_pages_id_seq Type: SEQUENCE Owner: mingo -- CREATE SEQUENCE "client_pages_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ; -- -- TOC Entry ID 34 (OID 81862) -- -- Name: client_pages Type: TABLE Owner: mingo -- CREATE TABLE "client_pages" ( "id" integer DEFAULT nextval('"client_pages_id_seq"'::text) NOT NULL, "client_id" integer NOT NULL, "name" character varying(250) NOT NULL, "lang_id" integer, "content" text, Constraint "client_pages_pkey" Primary Key ("id") ); -- -- TOC Entry ID 28 (OID 82749) -- -- Name: client_pages_trash_id_seq Type: SEQUENCE Owner: mingo -- CREATE SEQUENCE "client_pages_trash_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ; -- -- TOC Entry ID 66 (OID 82768) -- -- Name: client_pages_trash Type: TABLE Owner: mingo -- CREATE TABLE "client_pages_trash" ( "id" integer DEFAULT nextval('"client_pages_trash_id_seq"'::text) NOT NULL, "client_id" integer NOT NULL, "page_id" integer, "page_name" character varying(250), "date_posted" timestamp with time zone DEFAULT now(), "content" text, Constraint "client_pages_trash_pkey" Primary Key ("id") ); -- -- TOC Entry ID 85 (OID 82803) -- -- Name: "client_pages_upd_del_tr" () Type: FUNCTION Owner: mingo -- CREATE FUNCTION "client_pages_upd_del_tr" () RETURNS opaque AS ' begin insert into client_pages_trash(client_id,page_id,page_name,content) values(old.client_id,old.id,old.name,old.content); return new; end;' LANGUAGE 'plpgsql'; -- -- TOC Entry ID 112 (OID 93427) -- -- Name: client_pages_tr Type: TRIGGER Owner: mingo -- CREATE TRIGGER "client_pages_tr" BEFORE DELETE OR UPDATE ON "client_pages" FOR EACH ROW EXECUTE PROCEDURE "client_pages_upd_del_tr" (); insert into client_pages(client_id,name,lang_id,content) values(1,'car',1,'hello'); select * from client_pages; select * from client_pages_trash; update client_pages set content = 'updated' where id = 1; select * from client_pages; select * from client_pages_trash; delete from client_pages where id = 1; select * from client_pages; select * from client_pages_trash; ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html