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

Cách tạo Ràng buộc Duy nhất trên Nhiều Cột trong SQL Server - Hướng dẫn SQL Server / TSQL Phần 96

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
Nếu chúng tôi cố gắng chèn một bản ghi trùng lặp, chúng tôi sẽ gặp lỗi bên dưới.

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, ).  Câu lệnh đã bị chấm dứt. 



Video Demo:Tạo Ràng buộc Duy nhất trên Nhiều Cột trong SQL Server


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách liên kết cơ sở dữ liệu Access với SQL Server trong Access 2016

  2. Cách xác định số là số thực hay số nguyên

  3. Lỗi JDBC của SQL Server trên Java 8:Trình điều khiển không thể thiết lập kết nối an toàn với SQL Server bằng cách sử dụng mã hóa Lớp cổng bảo mật (SSL)

  4. Nội bộ sao chép giao dịch SQL Server

  5. Khắc phục Msg 8117 “Kiểu dữ liệu toán hạng varchar không hợp lệ cho toán tử sum” trong SQL Server