Skip to content

Commit 38dfc4c

Browse files
[ADD] Primary keys
1 parent 3c21f04 commit 38dfc4c

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

classes/25-primary-keys.sql

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
-- Generate a primary key using SERIAL or IDENTITY
2+
CREATE TABLE users (
3+
user_id SERIAL PRIMARY KEY,
4+
username VARCHAR(100)
5+
);
6+
7+
CREATE TABLE users_2 (
8+
user_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
9+
username VARCHAR(100)
10+
);
11+
12+
CREATE TABLE users_3 (
13+
user_id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
14+
username VARCHAR(100)
15+
);
16+
17+
CREATE TABLE users_4 (
18+
user_id INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 100 INCREMENT BY 2) PRIMARY KEY,
19+
username VARCHAR(100)
20+
);
21+
22+
-- Composite primary keys
23+
CREATE TABLE users_dual (
24+
id_1 int,
25+
id_2 int,
26+
PRIMARY KEY (id_1, id_2)
27+
);
28+
29+
SELECT *
30+
FROM users_dual;
31+
32+
-- Generate UUID as primary key
33+
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
34+
DROP EXTENSION "uuid-ossp";
35+
36+
SELECT gen_random_uuid(), uuid_generate_v4();
37+
38+
-- Generate a sequence
39+
DROP SEQUENCE user_sequence;
40+
CREATE SEQUENCE user_sequence;
41+
42+
SELECT
43+
CURRVAL('user_sequence'),
44+
NEXTVAL('user_sequence'),
45+
CURRVAL('user_sequence');
46+
47+
CREATE TABLE users_6 (
48+
user_id INTEGER PRIMARY KEY DEFAULT NEXTVAL('user_sequence'),
49+
username VARCHAR(100)
50+
);
51+
52+
SELECT *
53+
FROM users_6;

0 commit comments

Comments
 (0)