På fredag 25. desember 2020 kl. 17:48:39, skrev Adrian Klaver <
adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>>: 
On 12/25/20 5:52 AM, Andreas Joseph Krogh wrote:
 > Hi.
 > I need to set a value in a trigger if a column is explicitly NOT
 > specified in UPDATE's SET-clause.
 > Like for example having a "BEFORE UPDATE OF NOT"
 >
 > create TRIGGER my_trigger
 > BEFORE UPDATE OF NOT modified ON my_table FOR EACH ROW WHEN (OLD.val 
<>NEW.val)
 > EXECUTE PROCEDURE do_stuff();
 >
 > I want the trigger to be fired when the column "modified" is NOT
 > specified, is it possible?

 It will always be specified, it may or may not be changed. As example: 

True, but what I'm after is using the value from the "modified" column, if 
specified, else use CURRENT_TIMESTAMP 

My use-case is this; 

I have this table: 
create table person ( id serial primary key, username varchar not null unique, 
passwordvarchar not null, credentials_last_updated timestamp NOT NULL default 
CURRENT_TIMESTAMP, created timestamp NOT NULL default CURRENT_TIMESTAMP, 
modifiedtimestamp ); Then this trigger to update "credentials_last_updated" 
whenever "password" is modified.create or replace FUNCTION 
person_password_updated_tf() returns TRIGGER AS $$ BEGIN  NEW.
credentials_last_updated= NEW.modified; -- OR CURRENT_TIMESTAMP if "modified" 
isn't specified RETURN NEW; END; $$ LANGUAGE plpgsql; create TRIGGER 
person_password_updated_tBEFORE UPDATE OF password ON onp_user FOR EACH ROW WHEN
(OLD.password <> NEW.password ) EXECUTE PROCEDURE person_password_updated_tf(); 

So, I want to set "credentials_last_updated to NEW.modified if "modified" is 
specified, else toCURRENT_TIMESTAMP 



-- 
Andreas Joseph Krogh 
CTO / Partner - Visena AS 
Mobile: +47 909 56 963 
andr...@visena.com <mailto:andr...@visena.com> 
www.visena.com <https://www.visena.com> 
 <https://www.visena.com> 

Reply via email to