| From: | Bendik Rognlien Johansen <bendik(dot)johansen(at)gmail(dot)com> | 
|---|---|
| To: | pgsql-novice(at)postgresql(dot)org | 
| Cc: | bendik(dot)johansen(at)gmail(dot)com | 
| Subject: | Trigger unhappy (Correction) | 
| Date: | 2005-05-24 08:54:11 | 
| Message-ID: | F5B83AE3-1247-416B-ADA0-D256A2A3EFFE@gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-novice | 
Forgot to remove "OR" here IF NEW.indexed != true
Hello,
I have the following trigger on the table "records":
CREATE OR REPLACE FUNCTION records_update_trigger() RETURNS TRIGGER AS '
   BEGIN
     NEW.updated = now();
     IF OLD.address1 != NEW.address1 OR OLD.postalcode1 !=  
NEW.postalcode1
     THEN
       RAISE NOTICE ''Address was altered, position set to null'';
       NEW.position := NULL;
     END IF;
     IF NEW.indexed != true
     THEN
       NEW.indexed := false;
       RAISE NOTICE ''Index not set, unsetting indexed'';
     END IF;
     RETURN NEW;
   END;
' language plpgsql;
DROP TRIGGER update_trigger ON records;
CREATE TRIGGER update_trigger BEFORE UPDATE ON records FOR EACH ROW  
EXECUTE PROCEDURE records_update_trigger();
The "indexed" column on the table is default false.
Every time i do an update, the variable NEW.indexed is true, even  
when it is not set in the sql. The result is that indexed is never  
set to false in the second if-clause of the function.
What is causing this?
Thanks
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andreas Kretschmer | 2005-05-24 09:03:56 | Re: [despammed] Trigger unhappy | 
| Previous Message | Bendik Rognlien Johansen | 2005-05-24 08:48:14 | Trigger unhappy |