Giới thiệu về Sequence
Sequence là một đối tượng dữ liệu trong PostgreSQL, được sử dụng để tạo ra chuỗi các số tự nhiên (integer) theo 1 quy tắc nhất định. Để tạo 1 Sequece chúng ta sử dụng câu lệnh SQL là: CREATE SEQUENCE
Tạo Sequence (CREATE SEQUENCE)
Cú pháp lệnh:
CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] <sequence_name> [ AS <data_type> ] [ INCREMENT [ BY ] <increment >] [ MINVALUE <minvalue> | NO MINVALUE ] [ MAXVALUE <maxvalue> | NO MAXVALUE ] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ] [ OWNED BY { table_name.column_name | NONE } ]
Với:
- <sequence_name>: Tên của sequence
- <data_type>: Chỉ ra kiểu dữ liệu của sequence (smallint, integer, và bigint), mặc định là bigint
- <increment >: Giá trị bổ sung vào chuỗi, giá trị có thể là 1 số dương (2) hoặc 1 số âm (-1), mặc định là 1
- <minvalue>: Xác định giá trị tối thiểu một chuỗi có thể tạo ra. Nếu set giá trị hoặc NO MINVALUE được chỉ định, thì giá trị mặc định sẽ được sử dụng. Giá trị mặc định cho một chuỗi tăng dần là 1. Giá trị mặc định cho một chuỗi giảm dần là giá trị tối thiểu của kiểu dữ liệu.
- <maxvalue>: Xác định giá trị tối đa một chuỗi có thể tạo ra. Nếu set giá trị hoặc NO MAXVALUE được chỉ định, thì giá trị mặc định sẽ được sử dụng. Giá trị mặc định cho một chuỗi tăng dần là giá trị tối đa của kiểu dữ liệu. Giá trị mặc định cho một chuỗi giảm dần là -1.
- <start>: Giá trị bắt đầu của chuỗi. Giá trị mặc định là bắt đầu là <minvalue> cho chuỗi tăng dần và <maxvalue> cho chuỗi giảm dần.
Ví dụ: Tạo một chuỗi sequence tăng dần có tên là vinasupport_sequence
CREATE SEQUENCE vinasupport_sequence INCREMENT 1 START 100;
Nó sẽ tạo ra 1 chỗ sequence bắt đầu với 100 và mỗi 1 bản ghi insert vào sẽ tăng lên 1 đơn vị.
Để kiểm tra giá trị kế tiếp của 1 sequence trên chúng ta dùng câu SQL sau:
SELECT nextval('vinasupport_sequence');
Liệt kê danh sách Sequence
SELECT c.relname sequence_name FROM pg_class WHERE relkind = 'S';
Hoặc sử dụng command \ds
Xóa Sequence (DROP SEQUENCE)
Cú pháp lệnh:
DROP SEQUENCE [ IF EXISTS ] <squence_name> [, …] [ CASCADE | RESTRICT ]
Với:
- <squence_name>: Tên của sequence
Ví dụ: Xóa sequence “vinasupport_sequence”
DROP SEQUENCE vinasupport_sequence