CREATE OR REPLACE FUNCTION u9() RETURNS TRIGGER AS'
BEGIN
NEW.pass_md5=md5(NEW.pass);
return NEW;
END
'language plpgsql;
CREATE TRIGGER t8
BEFORE INSERT OR UPDATE
ON hoy FOR EACH ROW
EXECUTE PROCEDURE u9();
Ok. This is the solution. It works well, for inserts and updates. Took some
time to figure it out.
(ignore the function names --- test functions)
Best regards,
Andy.
----- Original Message -----
From: "daq" <[EMAIL PROTECTED]>
To: "Andrei Bintintan" <[EMAIL PROTECTED]>
Cc: <Pgsql-sql@postgresql.org>
Sent: Monday, July 18, 2005 4:32 PM
Subject: Re: [SQL] Create trigger for auto update function
Hello Andrei,
Monday, July 18, 2005, 2:24:41 PM, you wrote:
AB> Hi to all,
AB> I have a table:
AB> create table hoy(
AB> id serial,
AB> pass varchar(40),
AB> pass_md5 varchar(40);
AB> Now, I want to write a trigger function that automatically updates the
pass_md5 with the md5 function of the pass.
AB> I tried this:
AB> CREATE FUNCTION update_pass(integer) RETURNS integer AS $$
AB> UPDATE hoy SET pass_md5=md5(pass) WHERE id=$1;
AB> SELECT 1;
AB> $$ LANGUAGE SQL;
AB> and
AB> CREATE TRIGGER triger_users_pass_md5
AB> AFTER INSERT OR UPDATE
AB> ON hoy
AB> EXECUTE PROCEDURE update_pass(integer);
What will be the param of the trigger procedure?
Try this way:
CREATE FUNCTION update_pass() RETURNS integer AS $$
UPDATE hoy SET pass_md5=md5(pass) WHERE id=new.id;
SELECT 1;
$$ LANGUAGE SQL;
CREATE TRIGGER triger_users_pass_md5
AFTER INSERT OR UPDATE
ON hoy FOR EACH ROW
EXECUTE PROCEDURE update_pass;
DAQ
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq