Having a little trouble with TRIGGERS
От | Brendan Green |
---|---|
Тема | Having a little trouble with TRIGGERS |
Дата | |
Msg-id | 3a6c175b.df8bd@newton.pacific.net.au обсуждение исходный текст |
Ответы |
Re: Having a little trouble with TRIGGERS
|
Список | pgsql-general |
Hi all, My apologies if this has been answered - I haven't found a reference to it... I am using PostgreSQL 7.0.3 (installed from an RPM) on a RedHat 6.0 system. I have created a database and are trying to create a trigger. The purpose of this trigger is to automatically add the current date to a few fields (maintDate) in a table on an UPDATE, and the createDate on an INSERT. i.e. If a user modifies a record, the current date is updated in the record. Just a basic tracking method so I know WHO and WHEN a record was modified. Here is the code I am using: CREATE FUNCTION trigger_insert_update_tblUser() RETURNS opaque AS 'DECLARE trig_type text; rec_count integer; BEGIN -- Determine if this is an INSERT or an UPDATE IF ( SELECT COUNT(*) FROM old) > 0 THEN -- This is an update trig_type := "i"; ELSE -- This is an insert trig_type := "u"; END IF; -- Trigger logic after this line IF trig_type = "i" THEN -- Set the maint date NEW.maintDate = date(now()); END IF; IF trig_type = "u" THEN -- Set the create and maint dates NEW.maintDate := date(now()); NEW.dateCreated := date(now()); END IF; -- End of trigger logic RETURN NEW; END;' LANGUAGE 'plpgsql'; The problem is that when I try to insert a record into the table, I get the following error: ERROR: CURRENT used in non-rule query. I've been banging my head against a brick wall for the past few days. I *think* that it has something to do with a problem of "new" being aliased somehow with "CURRENT", but I don't know!!! Save me from insanity! Any help would be much appreciated. Thanks, Brendan Green bgreen@simtap.com.au
В списке pgsql-general по дате отправления: