Với MySQL thì đã có AUTO_INCREMENT giúp tăng tự động cho trường khóa chính có kiểu dữ liệu là số nguyên, tuy nhiên với Oracle thì không có sẵn như vậy mà bạn phải kết hợp Sequence và Trigger để tạo sự kiện tăng ID lên 1 mỗi khi có thao tác Insert.
1. Các thiết lập ID tăng tư động trong Oracle
Giả sử mình cần tạo bảng dữ liệu TINTUC như sau:
Field | Data Type |
---|---|
ID | number, tăng tự động |
TITLE | varchar(200) |
DESCRIPTION | varchar(500) |
Và đây là câu lệnh dùng để tạo bảng này.
CREATE TABLE TINTUC ( ID NUMBER PRIMARY KEY, TITLE VARCHAR(200), DESCRIPTION VARCHAR(500) )
Câu lệnh này sẽ tạo một bảng TINTUC với ID là khóa chính, tuy nhiên nó không hề tăng tự động. Để nó tăng tự động mỗi khi insert thì bạn thực hiện các bước sau.
Bài viết này được đăng tại [kiso.vn]
Tạo Sequence
Sau khi tạo thành công bảng TINTUC thì ta sẽ tạo một SEQUENCE giúp tự động tăng trường ID cho bảng này, ID này sẽ có giá trị bắt đầu từ 1 và tăng +1 mỗi khi có lệnh INSERT.
CREATE SEQUENCE AUTO_INCREMENT_SEQUENCE START WITH 1 INCREMENT BY 1;
Ok vậy là xong, bây giờ ta cần tạo trigger.
Tạo Trigger
Chúng ta dùng một trigger để kích hoạt Sequence vừa tạo, trigger này sẽ gọi đến AUTO_INCREMENT_SEQUENCE
để tăng trường ID lên 1 trước khi lệnh INSERT thực hiện.
CREATE OR REPLACE TRIGGER AUTO_INCREMENT_TRIGGER BEFORE INSERTON SINHVIEN REFERENCING NEW AS NEW FOR EACH ROWBEGINSELECT AUTO_INCREMENT_SEQUENCE.NEXTVAL INTO :NEW.ID FROM DUAL; END; /
Như vậy là bạn đã thiết lập thành công tăng tự động rồi đấy.
Lưu ý: Lệnh này chỉ có tác dụng trên một bảng, vì vậy nếu bạn có N bảng thì phải thực hiện N lần nhé.
2. Lời kết
Qua bài này nhận thấy việc thiết lập này là cần thiết trong trường hợp bạn muốn khóa chính tăng tự động, nó sẽ giúp cho việc truy vấn dữ liệu trở nên nhanh hơn rất nhiều vì mọi thứ đều được sắp xếp có thứ tự.
Cá nhân mình đang sử dụng MySQL nên cảm thấy Oracle quá rườm rà, tại sao nó không tạo một thông số cho việc thiết lập này vì nhu cầu thực tế rất cần thiết.
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chính1. Các thiết lập ID tăng tư động trong...
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chính1. Các thiết lập ID tăng tư động trong OracleTạo SequenceTạo Trigger2. Lời kết1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một bộ ứng dụng hoạt động trên Linux như một firewall được...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chính1. Các thiết lập ID tăng tư động trong OracleTạo SequenceTạo Trigger2. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory traversal (tiếp) 5. Bypass lỗ hổng khi trang web sử dụng...
Directory traversal vulnerabilities (phần 3)
Nội dung chính1. Các thiết lập ID tăng tư động trong OracleTạo SequenceTạo Trigger2. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory traversal 1. Lỗ hổng xảy ra khi sử dụng các hàm...
Directory traversal vulnerabilities (phần 2)
Nội dung chính1. Các thiết lập ID tăng tư động trong OracleTạo SequenceTạo Trigger2. Lời kếtIII. Vì sao lỗ hổng Directory traversal xuất hiện? Với mỗi ngôn ngữ lập trình khác nhau, điểm xuất hiện các...