Thứ Hai, 24 tháng 7, 2023

Thiết lập ID tăng tự động với Identity trong SQL Server

ID tăng tự động là một nhu cầu rất quan trọng trong việc lưu trữ dữ liệu, hầu như tất cả các khóa chính trong các dự án thực tế đều tạo bằng cách cho nó tăng tự động. Vậy làm thế nào để thiết lập tăng tự động? Trong bài này mình sẽ hướng dẫn các bạn.

Mục lục

  • 1. Thuộc tính Identity trong SQL Server
  • 2. Ví dụ thực tế với Identity trong SQL Server
    • Thêm record đầu tiên
    • Thêm record thứ hai
  • 3. Xóa một record thì ID có được thiết lập lại không? 

1. Thuộc tính Identity trong SQL Server

Với MySQL thì chúng ta có thuộc tính auto_increment dùng để xác định một column nào đó tăng tự động, còn SQL Server thì chúng ta có thuộc tính IDENTITY.

Cú pháp của nó như sau:

1
IDENTITY[(seed,increment)]

Bài viết này được đăng tại [free tuts .net]

Trong đó:

  • seed là giá trị được gán cho record đầu tiên lúc insert.
  • increment là giá trị sẽ tăng lên sau mỗi lần insert. 

Ví dụ 1: Thiết lập giá trị của record đầu tiên là 10, record thứ hai là 20, .... tức bước nhảy là 10

1
IDENTITY (10,10)

Ví dụ 2: Thiết lập giá trị của record đầu tiên là 10, record thứ hai là 15, .... tức bước nhảy là 5.

1
IDENTITY (10, 5)

2. Ví dụ thực tế với Identity trong SQL Server

Trước tiên bạn hãy tạo một schema tên là hr.

1
CREATE SCHEMA hr;

Bước tiếp theo tạo một bảng tên là person, có khóa chính là person_id và tăng tự động với bước nhảy là 1, giá trị khởi tạo là 1.

1
2
3
4
5
6
CREATE TABLE hr.person (
    person_id INT IDENTITY(1,1) PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    gender CHAR(1) NOT NULL
);

Các ví dụ dưới đây có sử dụng lênh INSERT nên nếu bạn không hiểu thì tạm thời bỏ qua bài này nhé, còn nếu bạn đã biết sơ sơ về lệnh insert thì cứ đọc tiếp.

Thêm record đầu tiên

1
2
3
INSERT INTO hr.person(first_name, last_name, gender)
OUTPUT inserted.person_id
VALUES('John','Doe', 'M');

Execute hoặc nhấn F5 để chạy câu truy vấn, kết quả bạn sẽ thấy như sau:

SQL Server Identity Column Example png

Thêm record thứ hai

1
2
3
INSERT INTO hr.person(first_name, last_name, gender)
OUTPUT inserted.person_id
VALUES('Jane','Doe','F');

Chạy câu SQL này thì kết quả như sau:

SQL Server Identity Column Example 2 png

Như vậy rõ ràng person_id được tăng lên 1 cho record tiếp theo.

3. Xóa một record thì ID có được thiết lập lại không? 

Điểm đặc biệc giúp Identity truy cập nhanh đó là tăng tự động và không hề thiết lập lại giá trị nếu bại xóa một vài record nào đó. 

Ví dụ bạn có một dãy các record từ (1 ...10), trong quá trình sử dụng bạn xóa đi record có id là (4, 5, 6), lúc này dãy các record sẽ bị khuyết 3 giá trị (4, 5, 6). Bây giờ bạn thực hiện thêm mới một record thì ID vẫn tăng lên 11 chứ không lặp lại một trong ba giá trị (4, 5, 6).

Ok, vậy là bạn đã biết cách sử dụng thuộc tính Identity để thiết lập ID tăng tự động rồi đấy, chúc bạn học tốt và hẹn gặp lại ở bài tiếp theo.

=============================
* 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