Thứ Hai, 24 tháng 7, 2023

Thiết lập ID tăng tự động trong Oracle

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.

Mục lục

  • 1. Các thiết lập ID tăng tư động trong Oracle
    • Tạo Sequence
    • Tạo Trigger
  • 2. Lời kết

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:

FieldData Type
IDnumber, tăng tự động
TITLEvarchar(200)
DESCRIPTIONvarchar(500)

Và đây là câu lệnh dùng để tạo bảng này.

1
2
3
4
5
6
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.

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.

1
2
3
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.

1
2
3
4
5
6
7
8
9
CREATE OR REPLACE TRIGGER AUTO_INCREMENT_TRIGGER
BEFORE INSERTON
TINTUC
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.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master