Thứ Tư, 16 tháng 9, 2026

Tự động tăng số thứ tự trong Oracle từ bản bao nhiêu?

1.VẤN ĐỀ

Tính năng tự động tăng số thứ tự (Auto Increment) dưới dạng cột IDENTITY chính thức được Oracle Database giới thiệu từ phiên bản Oracle 12c. [1, 2]

Trước phiên bản 12c (như Oracle 11g trở về trước), Oracle không hỗ trợ cú pháp tạo cột tự động tăng trực tiếp mà lập trình viên phải kết hợp thủ công giữa SEQUENCE và TRIGGER. [1, 2]

2.NGUYÊN NHÂN

Do phiên bản <12c không hỗ trợ

3.GIẢI PHÁP

Dưới đây là hướng dẫn chi tiết cách sử dụng tính năng này cho cả phiên bản mới (12c trở lên) và các phiên bản cũ. [1, 2]

1. Cách dùng từ bản Oracle 12c trở lên (Khuyến khích)
Từ phiên bản này, bạn chỉ cần dùng từ khóa GENERATED AS IDENTITY ngay khi tạo bảng. Hệ thống sẽ tự động quản lý một SEQUENCE ngầm bên dưới. [1, 2, 3, 4]
Cú pháp cơ bản:
sql
CREATE TABLE NhanVien (
    Id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    Ten VARCHAR2(100) NOT NULL
);
Các tùy chọn nâng cao khi khai báo IDENTITY:
Bạn có thể cấu hình giá trị bắt đầu hoặc bước nhảy bằng cách thêm tham số: [1, 2]
  • GENERATED ALWAYS AS IDENTITY: Ép buộc trường này luôn tự động tăng. Bạn sẽ bị báo lỗi nếu cố tình chèn (INSERT) một giá trị thủ công vào cột này.
  • GENERATED BY DEFAULT AS IDENTITY: Tự động tăng nếu bạn không truyền giá trị. Nếu bạn truyền giá trị cụ thể, Oracle sẽ lấy giá trị của bạn.
  • GENERATED BY DEFAULT ON NULL AS IDENTITY: Tự động tăng khi bạn không truyền giá trị HOẶC giá trị bạn truyền vào là NULL. [1, 2, 3, 4]
Ví dụ tùy chỉnh nâng cao:
sql
CREATE TABLE SanPham (
    Id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 100 INCREMENT BY 5),
    TenSanPham VARCHAR2(100)
);
-- Số thứ tự sẽ bắt đầu từ 100 và mỗi lần tăng thêm 5 đơn vị (100, 105, 110,...)
Cách chèn dữ liệu (INSERT):
Bạn chỉ cần chèn dữ liệu vào các cột khác, bỏ qua cột Id: [1, 2]
sql
INSERT INTO NhanVien (Ten) VALUES ('Nguyen Van A');
INSERT INTO NhanVien (Ten) VALUES ('Tran Thi B');
2. Cách dùng cho bản Oracle 11g trở về trước
Nếu bạn đang làm việc với các hệ thống cũ, bạn cần thực hiện 2 bước độc lập: Tạo một chuỗi số (SEQUENCE) và một trình kích hoạt (TRIGGER). [1, 2]
Bước 1: Tạo bảng dữ liệu
sql
CREATE TABLE NhanVien_Cu (
    Id NUMBER PRIMARY KEY,
    Ten VARCHAR2(100) NOT NULL
);
Bước 2: Tạo SEQUENCE để sinh số tự động
sql
CREATE SEQUENCE seq_nhanvien_cu
    START WITH 1
    INCREMENT BY 1;
Bước 3: Tạo TRIGGER để tự áp số từ Sequence vào bảng khi INSERT
sql
CREATE OR REPLACE TRIGGER trg_nhanvien_cu
BEFORE INSERT ON NhanVien_Cu
FOR EACH ROW
BEGIN
    -- Lấy số tiếp theo của sequence gán vào cột Id trước khi ghi vào database
    :NEW.Id := seq_nhanvien_cu.NEXTVAL; 
END;
/
Cách chèn dữ liệu (INSERT):
Sau khi cấu hình xong Trigger, lệnh INSERT hoàn toàn giống như phiên bản mới:
sql
INSERT INTO NhanVien_Cu (Ten) VALUES ('Lê Văn C');
-- Cột Id sẽ tự động nhận giá trị 1 nhờ Trigger gọi Sequence ngầm định
📊 Bảng so sánh nhanh hai phương pháp
Tiêu chíBản Oracle 12c trở lên (IDENTITY)Bản Oracle 11g trở xuống (SEQUENCE + TRIGGER)
Độ phức tạpRất đơn giản, viết gói gọn trong câu lệnh CREATE TABLE.Phức tạp, phải quản lý 3 đối tượng độc lập (Table, Sequence, Trigger).
Hiệu năngTối ưu tốt hơn do xử lý trực tiếp ở tầng nhân cơ sở dữ liệu.Tốn thêm tài nguyên do phải kích hoạt vòng lặp Trigger xử lý PL/SQL bên ngoài.
Quản lý mã nguồnDễ bảo trì, gọn gàng, chuẩn hóa giống như SQL Server hay MySQL.Khó quản lý khi hệ thống có hàng trăm bảng cần tăng tự động.
=============================
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- 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
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
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

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, 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/21c/23c/23ai, 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, docker, k8s, micro service, 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