-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpart_4_1.sql
More file actions
36 lines (34 loc) · 744 Bytes
/
part_4_1.sql
File metadata and controls
36 lines (34 loc) · 744 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
CREATE TABLE session_count (
session_count_id SERIAL PRIMARY KEY,
user_id INTEGER UNIQUE,
session_count_value INTEGER
);
CREATE OR REPLACE FUNCTION update_session_count() RETURNS
TRIGGER AS
$$
BEGIN
INSERT INTO
session_count (user_id, session_count_value)
VALUES (
NEW.user_id, (
SELECT COUNT(session_id)
FROM session_table
WHERE
user_id = NEW.user_id
)
)
ON CONFLICT (user_id) DO
UPDATE
SET
session_count_value = EXCLUDED.session_count_value;
RETURN NEW;
END;
$$
LANGUAGE
plpgsql;
CREATE TRIGGER trigger_update_session_count
AFTER INSERT
OR
UPDATE
OR DELETE ON session_table FOR EACH ROW
EXECUTE FUNCTION update_session_count ();