X-Original-To: pgsql-sql@postgresql.org Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id 4787F475E45 for ; Fri, 7 Feb 2003 02:58:30 -0500 (EST) Received: from matrix.gatewaynet.com (unknown [217.19.69.50]) by postgresql.org (Postfix) with ESMTP id E8B35474E4F for ; Fri, 7 Feb 2003 02:54:33 -0500 (EST) Received: from matrix.gatewaynet.com (matrix.gatewaynet.com [217.19.69.50] (may be forged)) by matrix.gatewaynet.com (8.12.5/8.12.5) with ESMTP id h17C0VZV019102; Fri, 7 Feb 2003 10:00:31 -0200 Received: from localhost (achill@localhost) by matrix.gatewaynet.com (8.12.5/8.12.5/Submit) with ESMTP id h17C0THe019098; Fri, 7 Feb 2003 10:00:30 -0200 Date: Fri, 7 Feb 2003 10:00:29 -0200 (GMT+2) From: Achilleus Mantzios To: Jan Wieck Cc: Neal Lindsay , Subject: Re: automatic time/user stamp - rule or trigger? In-Reply-To: <3E415F97.62A6E585@Yahoo.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: by AMaViS new-20020517 X-Archive-Number: 200302/137 X-Sequence-Number: 11535 On Wed, 5 Feb 2003, Jan Wieck wrote: > Achilleus Mantzios wrote: > > > > On Wed, 5 Feb 2003, Neal Lindsay wrote: > > > > > I have a table that I want to keep track of the user who last modified > > > it and the timestamp of the modification. Should I use a trigger or a rule? > > > > > > CREATE TABLE stampedtable ( > > > stampedtableid SERIAL PRIMARY KEY, > > > updatestamp timestamp NOT NULL DEFAULT now(), > > > updateuser name NOT NULL DEFAULT current_user, > > > sometext text > > > ); > > > > > > I suspect that I want a rule, but all the examples in the documentation > > > seem to update a separate table and not override (or add) the > > > insert/update to the timestamp and name columns. > > > > You may want to use rules if you need rewriting. > > What you actually need is some sort of driver to a specific table. > > You could create a view to that table (to hide the accounting columns), > > and then create rules on that view that do the job as you wish. > > I'm sure you want to use a BEFORE INSERT OR UPDATE trigger that modifies > NEW.updatestamp in place just before the row get's written. > > A rule will not work here because rules cannot cause the same action on > the same table they are called for. Thats why the view comes in place. > > > Jan > > -- > #======================================================================# > # It's easier to get forgiveness for being wrong than for being right. # > # Let's break this rule - forgive me. # > #================================================== JanWieck@Yahoo.com # > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > ================================================================== Achilleus Mantzios S/W Engineer IT dept Dynacom Tankers Mngmt Nikis 4, Glyfada Athens 16610 Greece tel: +30-10-8981112 fax: +30-10-8981877 email: achill@matrix.gatewaynet.com mantzios@softlab.ece.ntua.gr