Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách xác định khóa chính tự động tăng dần trong SQL Server

Tương tự như MySQL, PostgreSQL, Oracle và nhiều cơ sở dữ liệu quan hệ khác, SQL Server được sử dụng tốt nhất khi gán các khóa chính duy nhất cho hầu hết các bảng cơ sở dữ liệu.

Lợi ích của việc sử dụng khóa chính dạng số, tự động tăng lên là rất nhiều, nhưng lợi ích tác động nhất là tốc độ nhanh hơn khi thực hiện truy vấn và độc lập dữ liệu khi tìm kiếm qua hàng nghìn bản ghi có thể chứa dữ liệu thường xuyên bị thay đổi ở những nơi khác trong bảng. Với mã nhận dạng số nhất quán và duy nhất, các ứng dụng có thể tận dụng các truy vấn nhanh hơn và đáng tin cậy hơn này.

Tạo bảng cơ bản

Sau khi kết nối với Máy chủ SQL của bạn, bạn thường bắt đầu bằng cách CREATING một bảng mới chứa trường bạn muốn sử dụng làm khóa chính tăng dần của mình. Đối với ví dụ của chúng tôi, chúng tôi sẽ gắn bó với id đã thử và đúng lĩnh vực:

CREATE TABLE books (
  id              INT           NOT NULL,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

Vấn đề ở đây là, chúng tôi không có cách nào để kiểm soát id của chúng tôi đồng ruộng. Khi một bản ghi mới được chèn vào, chúng tôi không chỉ phải nhập giá trị cho id theo cách thủ công , nhưng chúng tôi phải thực hiện truy vấn trước để cố gắng xác minh rằng id giá trị chưa tồn tại (gần như không thể xảy ra khi xử lý nhiều kết nối đồng thời).

Sử dụng các ràng buộc về danh tính và khóa chính

Giải pháp hóa ra là sử dụng hai tùy chọn ràng buộc do SQL Server cung cấp.

Đầu tiên là PRIMARY KEY , như tên gợi ý, buộc cột được chỉ định hoạt động như một chỉ mục hoàn toàn duy nhất cho bảng, cho phép tìm kiếm và truy vấn nhanh chóng.

Mặc dù SQL Server chỉ cho phép một PRIMARY KEY ràng buộc được gán cho một bảng duy nhất, PRIMARY KEY đó có thể được xác định cho nhiều hơn một cột. Trong trường hợp nhiều cột, các cột riêng lẻ có thể chứa các giá trị trùng lặp, không phải là duy nhất, nhưng PRIMARY KEY ràng buộc đảm bảo rằng mọi sự kết hợp các giá trị bị ràng buộc trên thực tế sẽ là duy nhất so với mọi kết hợp khác.

Phần thứ hai của câu đố là IDENTITY ràng buộc, thông báo cho SQL Server tự động tăng giá trị số trong cột được chỉ định bất cứ lúc nào bản ghi mới được INSERTED . Trong khi IDENTITY can chấp nhận hai đối số của seed số nơi các giá trị sẽ bắt đầu từ đó cũng như increment , các giá trị này thường không được chỉ định bằng IDENTITY ràng buộc và thay vào đó được để ở dạng mặc định (cả hai đều mặc định là 1 ).

Với kiến ​​thức mới này trong tầm tay, chúng tôi có thể viết lại CREATE TABLE trước đây của mình bằng cách thêm hai ràng buộc mới của chúng tôi.

CREATE TABLE books (
  id              INT           NOT NULL    IDENTITY    PRIMARY KEY,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

Thats tất cả để có nó. Bây giờ là id cột books của chúng tôi bảng sẽ tự động tăng lên sau mỗi INSERTid trường cũng được đảm bảo là một giá trị duy nhất.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn n hàng ngẫu nhiên từ bảng SQL Server

  2. SQL Server 2017 sao lưu -3

  3. Cách tách cửa sổ truy vấn trong SQL Server Management Studio (SSMS) - SQL Server / TSQL Hướng dẫn Phần 13

  4. Cách trừ 30 ngày từ ngày hiện tại bằng SQL Server

  5. CTE để nhận tất cả các con (con cháu) của một phụ huynh