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

ràng buộc duy nhất có điều kiện

Kìa, chỉ mục được lọc. Từ tài liệu (tôi nhấn mạnh):

Chỉ mục được lọc là một chỉ mục không phân tán được tối ưu hóa, đặc biệt thích hợp để bao hàm các truy vấn chọn từ một tập hợp con dữ liệu được xác định rõ ràng. Nó sử dụng một vị từ bộ lọc để lập chỉ mục một phần của các hàng trong bảng. Chỉ mục được lọc được thiết kế tốt có thể cải thiện hiệu suất truy vấn cũng như giảm chi phí lưu trữ và bảo trì chỉ mục so với chỉ mục toàn bảng.

Và đây là một ví dụ kết hợp một chỉ mục duy nhất với một vị từ bộ lọc:

create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;

Điều này về cơ bản thực thi tính duy nhất của ID khi RecordStatus1 .

Sau khi tạo chỉ mục đó, vi phạm tính duy nhất sẽ gây ra lỗi:

Msg 2601, Mức 14, Trạng thái 1, Dòng 13
Không thể chèn hàng khóa trùng lặp trong đối tượng 'dbo.MyTable' với chỉ mục duy nhất 'MyIndex'. Giá trị khóa trùng lặp là (9999).

Lưu ý:chỉ mục được lọc đã được giới thiệu trong SQL Server 2008. Đối với các phiên bản SQL Server cũ hơn, vui lòng xem câu trả lời này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tìm ranh giới của các nhóm số liên tiếp liền nhau?

  2. 5 Nguyên tắc truy vấn và cú pháp SQL để giám sát cơ sở dữ liệu tốt hơn

  3. 3 cách trả về danh sách công việc tác nhân máy chủ SQL (T-SQL)

  4. Điều hướng nhật ký lỗi máy chủ SQL

  5. Cách tạo Tập lệnh để Thêm Ràng buộc Mặc định vào Cột trong Nhiều Bảng trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 94