Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dodangquan/67dfbdec47639231349842c18430e2dc to your computer and use it in GitHub Desktop.
Save dodangquan/67dfbdec47639231349842c18430e2dc to your computer and use it in GitHub Desktop.
Tạo column kiểu số có giá trị tự động tăng trong Oracle Database

Để tạo được một column có kiểu là NUMBER mà giá trị của column đó có thể tự động tăng khi thực hiện câu lệnh INSERT trong hệ quản trị cơ sở dữ liệu Oracle ta sẽ phải sử dụng đến SEQUENCE kết hợp với TRIGGER.

Muốn thực hiện được điều này, đầu tiên phải tạo một SEQUENCE:

CREATE SEQUENCE name_of_sequence
  START WITH 1
  INCREMENT BY 1
  MAX VALUE 999999
  CACHE 100;

Đến đây, mỗi khi thực hiện câu lệnh INSERT, chỉ cần thực hiện như sau là đã có thể lấy được giá trị tăng kế tiếp để insert vào database:

INSERT INTO table_name(column_increment, other_column) 
  VALUES (name_of_sequence.NEXTVAL, other_column_value);

Ngoài ra, để thực hiện insert giá trị tự động tăng này vào column mà không cần gọi trực tiếp đến column đó trong câu lệnh, ta sẽ phải tạo ra một TRIGGER để thực hiện được điều này.

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT ON table_name
  FOR EACH ROW
BEGIN
  SELECT name_of_sequence.NEXTVAL
    INTO :new.primary_key_column
  FROM dual;
END;

Từ phiên bản Oracle 11.1 về sau, ta có thể đơn giản khối lệnh tạo TRIGGER bên trên như sau:

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT ON table_name
  FOR EACH ROW
BEGIN
  :new.primary_key_column := name_of_sequence.NEXTVAL;
END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment