· 8 years ago · Jan 19, 2018, 03:12 AM
1CREATE OR REPLACE FUNCTION update_updated_at()
2 RETURNS TRIGGER AS $$
3 BEGIN
4 NEW.updated_at = now();
5 RETURN NEW;
6 END;
7 $$ language 'plpgsql';
8
9CREATE TRIGGER update_users_updated_at
10 BEFORE UPDATE ON users
11 FOR EACH ROW EXECUTE PROCEDURE update_updated_at();
12
13DROP TABLE mdt;
14
15CREATE TABLE mdt (
16 id int4,
17 idesc text,
18 moddate timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL
19);
20
21CREATE TRIGGER mdt_moddatetime
22 BEFORE UPDATE ON mdt
23 FOR EACH ROW
24 EXECUTE PROCEDURE moddatetime (moddate);
25
26INSERT INTO mdt VALUES (1, 'first');
27INSERT INTO mdt VALUES (2, 'second');
28INSERT INTO mdt VALUES (3, 'third');
29
30SELECT * FROM mdt;
31
32UPDATE mdt SET id = 4
33 WHERE id = 1;
34UPDATE mdt SET id = 5
35 WHERE id = 2;
36UPDATE mdt SET id = 6
37 WHERE id = 3;
38
39SELECT * FROM mdt;
40
41CREATE EXTENSION spi;
42
43ALTER TABLE users ALTER timestamp_at SET DEFAULT now();
44
45DROP TRIGGER IF EXISTS
46 update_users_updated_at ON users;
47
48CREATE TRIGGER mdt_users
49 BEFORE UPDATE ON users
50 FOR EACH ROW
51 EXECUTE PROCEDURE moddatetime (timestamp_at);