در بسیاری از جداول، نیاز است که برای هر رکورد یک عدد یکتا و افزایشی تولید شود. مثلاً در ثبتنام کاربران، هر کاربر باید یک شناسه منحصر به فرد دریافت کند. برای این منظور، پایگاه داده باید مکانیزمی برای تولید دنبالههای عددی خودکار داشته باشد.
مثال ایجاد Sequence و استفاده در جدول:
CREATE SEQUENCE user_id_seq
START WITH 1
INCREMENT BY 1;
CREATE TABLE users (
id INT DEFAULT nextval('user_id_seq') PRIMARY KEY,
name TEXT
);
INSERT INTO users(name) VALUES ('Ali'), ('Sara');
SERIAL، PostgreSQL به صورت خودکار یک Sequence ایجاد کرده و ستون را به آن متصل میکند.SERIAL استاندارد SQL نیست اما در اکوسیستم PostgreSQL بسیار رایج است.مثال:
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name TEXT
);
INSERT INTO products(name) VALUES ('Laptop'), ('Mouse');
مثال:
CREATE TABLE orders (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
customer TEXT,
amount NUMERIC
);
INSERT INTO orders(customer, amount) VALUES ('Ali', 100);
-- برای GENERATED BY DEFAULT میتوان مقدار دلخواه وارد کرد:
CREATE TABLE invoices (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
total NUMERIC
);
INSERT INTO invoices(id, total) VALUES (500, 1200); -- مقدار دلخواه پذیرفته شد
INSERT INTO invoices(total) VALUES (1300); -- مقدار دنباله استفاده شد
| مکانیزم | استاندارد SQL | کنترل دنباله | ویژگیها |
|---|---|---|---|
| Sequence | بله | کامل | مستقل از جدول، قابل استفاده در چند جدول |
| Serial | خیر | محدود | Shortcut Sequence + DEFAULT، رایج در PostgreSQL |
| Identity | بله | کامل | ستون استاندارد SQL، حالت ALWAYS یا BY DEFAULT، کنترل کامل دنباله |
نکته: