Update timestamp when row is updated in PostgreSQL
In MySQL, we can execute this where it updates the column changetimestamp
every time the row is changed:
create table ab (
id int,
changetimestamp timestamp
NOT NULL
default CURRENT_TIMESTAMP
on update CURRENT_TIMESTAMP
);
Is there something similar to do the above in PostgreSQL?
Solution 1:
Create a function that updates the changetimestamp column of a table like so:
CREATE OR REPLACE FUNCTION update_changetimestamp_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.changetimestamp = now();
RETURN NEW;
END;
$$ language 'plpgsql';
Create a trigger on the table that calls the update_changetimestamp_column() function whenever an update occurs like so:
CREATE TRIGGER update_ab_changetimestamp BEFORE UPDATE
ON ab FOR EACH ROW EXECUTE PROCEDURE
update_changetimestamp_column();