Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1U5NuF-0007rd-LG for pgsql-admin@arkaria.postgresql.org; Tue, 12 Feb 2013 22:00:51 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.72) (envelope-from ) id 1U5NuE-0000S6-PX for pgsql-admin@arkaria.postgresql.org; Tue, 12 Feb 2013 22:00:50 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1U5NuD-0000S0-AU for pgsql-admin@postgresql.org; Tue, 12 Feb 2013 22:00:49 +0000 Received: from nm34-vm4.bullet.mail.bf1.yahoo.com ([72.30.239.76]) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1U5Nu9-0000tZ-0F for pgsql-admin@postgresql.org; Tue, 12 Feb 2013 22:00:48 +0000 Received: from [98.139.212.153] by nm34.bullet.mail.bf1.yahoo.com with NNFMP; 12 Feb 2013 22:00:43 -0000 Received: from [98.139.215.230] by tm10.bullet.mail.bf1.yahoo.com with NNFMP; 12 Feb 2013 22:00:43 -0000 Received: from [127.0.0.1] by omp1070.mail.bf1.yahoo.com with NNFMP; 12 Feb 2013 22:00:43 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 66084.61455.bm@omp1070.mail.bf1.yahoo.com Received: (qmail 50107 invoked by uid 60001); 12 Feb 2013 22:00:43 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ymail.com; s=s1024; t=1360706442; bh=KUVp55JphYB/1UMNDUObdyCWgCJHS4b0jhg9CO0Jl+Q=; h=X-YMail-OSG:Received:X-Rocket-MIMEInfo:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=x4oFNkxI9CmiIxjKyKHVHzwmvFY2JN9TDGh30ylEQz2bDcd9cdp/fCteGQxI3IrAHZeFbDAoZIQ+yAHO4jxRvlU8qcNsezz2N1B0k/F8NTJ6+oohHnomZBUOf8FiS3N5eIsSl+rmtIhdrhCiqDe5lrmG4Ew0cjIf2dH3XvGMWAQ= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=ymail.com; h=X-YMail-OSG:Received:X-Rocket-MIMEInfo:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=bz5tioKxIfPphn8BIS27qlgn55xFizHRbrasQR7mk5X1wjyGfpW0846q/CIHoqkI954ShVyB/NZ+fzcbCcIUtO6Xs+iHJexRvfyBy+ShVybaaQl1tzfu2fFvdifnLdnPDj/mgrEcyMdr3aqS629XFrwwEH1ovcXB/WpKWqNuUrM=; X-YMail-OSG: 3zZ5CcoVM1nKn2w59tHYWfFflEwolBG.BAwBp0w8YA_QN3u AYVX0h4uGBH.llH0chNg645qLqHRZ09bCUyNNuzJh5grgbk7fMvnzraES4YD C5cwBjWDxBuiiJ90NMPNq9bO3Opa_zPA77955.z.O5hv1r166QLWZbSKZ.B4 itK7fjT4Xh53q_Z5wiIlewyEeHX74ki0pCnvSGY.wykZBlT30KD2NYXGt1rw rqF4l1b8UiHrrrSTYXL3s2.yeuhOH0vVjsGbL593xvquMqTyETgjykMWyJJG 3a24qTpAyiUe_LMAqjGdyVyoeAPblPF_Qb4U3GoAENV0PB5mSi7iEwr_c3St RjB1FHL7AT6hYExsJsShMuS5m.TnV_J.t31BkVpWDch8sKI2zBGVcIAe7ZRx X.wvBaFb7dfaeiHTPBWSG54df2lE09JUd76MfgJvAfBT9sMKcb.zc06oRAQ5 tH4W60YKg.sjSaxPAJJCMIBYfgFPRifyAZZf.uhW2enWX8LjpV0P5PaintmD vMIUgVzUDnj6j0CZC5SjDpjBtN8tbUKk6vUB8pembg9M- Received: from [76.255.18.237] by web162906.mail.bf1.yahoo.com via HTTP; Tue, 12 Feb 2013 14:00:42 PST X-Rocket-MIMEInfo: 001.001, IkNhbXBiZWxsLCBMYW5jZSIgPGxhbmNlQGlsbGlub2lzLmVkdT4gd3JvdGU6Cgo.IEkgd291bGQgbGlrZSB0byBoYXZlIGEgZ2VuZXJpYyBzdHJhdGVneSBmb3IgdXBkYXRpbmcgYSB0aW1lc3RhbXAKPiBmaWVsZCBvbiBzb21lIHRhYmxlcyB3aGVuZXZlciB0aGUgdGFibGUgaXMgdXBkYXRlZC7CoCBJcyB0aGVyZSBhCj4gcmVjb21tZW5kZWQgc3RyYXRlZ3kgZm9yIGRvaW5nIHRoaXMgb3RoZXIgdGhhbiB2aWEgdGhlIFNRTCBVUERBVEUKPiBjb21tYW5kPwoKPiBFeGFtcGxlIHRhYmxlOgo.IENSRUFURSBUQUIBMAEBAQE- X-Mailer: YahooMailWebService/0.8.133.508 References: Message-ID: <1360706442.33888.YahooMailNeo@web162906.mail.bf1.yahoo.com> Date: Tue, 12 Feb 2013 14:00:42 -0800 (PST) From: Kevin Grittner Reply-To: Kevin Grittner Subject: Re: update Timestamp updated whenever the table is updated To: "Campbell, Lance" , "pgsql-admin@postgresql.org" In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Pg-Spam-Score: 0.0 (/) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-admin Precedence: bulk Sender: pgsql-admin-owner@postgresql.org "Campbell, Lance" wrote: > I would like to have a generic strategy for updating a timestamp > field on some tables whenever the table is updated.=A0 Is there a > recommended strategy for doing this other than via the SQL UPDATE > command? > Example table: > CREATE TABLE test_table > ( >=A0=A0 id integer NOT NULL, >=A0=A0 field1 character varying NOT NULL, >=A0=A0 field2 character varying NOT NULL, >=A0=A0 updated_timestamp timestamp with time zone DEFAULT now(), >=A0=A0 created_timestamp timestamp with time zone DEFAULT now() > ); A BEFORE UPDATE trigger is probably what you want.=A0 You could write a single trigger function which could be attached to all tables with the updated_timestamp column.=A0 For example: CREATE FUNCTION set_updated_timestamp() =A0 RETURNS TRIGGER =A0 LANGUAGE plpgsql AS $$ BEGIN =A0 NEW.updated_timestamp :=3D now(); =A0 RETURN NEW; END; $$; Note that the above function depends on a column name, but not a table name.=A0 You link it to each table like this: CREATE TRIGGER test_table_update_timestamp =A0 BEFORE UPDATE ON test_table =A0 FOR EACH ROW EXECUTE PROCEDURE set_updated_timestamp(); > I think I read something about RULES. You generally want to avoid RULES, especially where a trigger works so well. --=20 Kevin Grittner EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --=20 Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin