Để 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;
Không có nhận xét nào:
Đăng nhận xét