-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatabase.sql
26 lines (23 loc) · 935 Bytes
/
database.sql
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
CREATE FUNCTION set_updated_at_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TABLE users (
id SERIAL NOT NULL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT (NOW()),
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT (NOW())
);
CREATE TABLE products (
id SERIAL NOT NULL PRIMARY KEY,
description TEXT NOT NULL,
user_id INT NOT NULL REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT (NOW()),
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT (NOW())
);
CREATE TRIGGER set_updated_at_timestamp BEFORE UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE set_updated_at_timestamp();
CREATE TRIGGER set_updated_at_timestamp BEFORE UPDATE ON products FOR EACH ROW EXECUTE PROCEDURE set_updated_at_timestamp();