Tình huống:
Bạn đang làm việc với tư cách là Nhà phát triển SQL Server, bạn được yêu cầu cung cấp tạo tập lệnh cho bảng dbo.Customer với Ràng buộc duy nhất trên cột Tên và Họ.Giải pháp:
Như chúng ta biết rằng Ràng buộc duy nhất trong SQL Server được tạo trên một cột hoặc các cột để hạn chế / các cột chỉ chấp nhận các giá trị duy nhất.Tập lệnh dưới đây có thể được sử dụng để tạo Ràng buộc duy nhất trên nhiều cột trong trường hợp của chúng tôi là FirstName và LastName.
USE [YourDatabaseName] GO CREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Constraint UQ_Dbo_Customer_FName_LName Unique(FirstName,LastName) ) --Let's insert some sample data to test Unique Constraint Insert into dbo.Customer(FirstName,LastName,SSN) Values(Null,Null,'000-00-0000'), ('Aamir',Null,'000-00-0000'), (Null,'Aamir','000-00-0000') ,('Aamir','Shahzad','000-00-0001') ,('Raza','M','000-00-0002')
Nếu bạn nhận thấy câu lệnh chèn, Trong Bản ghi Đầu tiên, tôi đã đặt cả hai giá trị Null cho FirstName và Last Name. Trong bản ghi thứ 2, tôi sử dụng giá trị 'Aamir' cho tên và Null cho họ. Trong bản ghi thứ 3 ngược lại của bản ghi thứ hai. Từ đây, chúng ta hiểu rằng ràng buộc duy nhất đang hoạt động trên cả hai giá trị cột. Miễn là giá trị kết hợp từ cả hai cột là duy nhất, nó sẽ cho phép chúng tôi chèn ngay cả một trong số chúng là null.
Nếu tôi muốn chèn một bản ghi khác mà tôi có Null cho họ , nó sẽ cho phép tôi mà không gặp bất kỳ vấn đề gì, vì nó là duy nhất so với các giá trị hiện có.
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza',Null,'000-00-0000')
Hãy kiểm tra các bản ghi trong bảng bằng cách sử dụng truy vấn chọn.
Cách thêm Ràng buộc Duy nhất trên Nhiều Cột trong Bảng SQL Server |
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza',Null,'000-00-0000')
Bản tin thứ 2627, Mức 14, Trạng thái 1, Dòng 30 Vi phạm ràng buộc KEY DUY NHẤT 'UQ_Dbo_Customer_FName_LName'. Không thể chèn khóa trùng lặp vào đối tượng 'dbo.Customer'. Giá trị khóa trùng lặp là (Raza,
Video Demo:Tạo Ràng buộc Duy nhất trên Nhiều Cột trong SQL Server