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

Kiểm tra ràng buộc trong SQL Server là gì - Hướng dẫn sử dụng SQL Server / TSQL Phần 82

Ràng buộc Kiểm tra là gì:

Kiểm tra Ràng buộc giới hạn các giá trị được chấp nhận bởi một hoặc nhiều cột.


Hãy hiểu Ràng buộc Kiểm tra với kịch bản thời gian thực.

Bạn đang làm việc với tư cách là nhà phát triển SQL Server, Bạn cần tạo bảng dbo.Customer phải có các cột như FName, LName và Address. Vì FName sẽ là VARCHAR nên người dùng có thể chèn các giá trị chuỗi có thể chứa bảng chữ cái, số và các ký tự khác. Bạn muốn viết Ràng buộc kiểm tra để FName chỉ chấp nhận các bảng chữ cái.

Giải pháp:

Hãy tạo bảng với Check Constraint bằng cách sử dụng tập lệnh dưới đây

--Create Table with 
use YourDatabaseName
go
Create table dbo.Customer
(
FName VARCHAR(100) Not Null,
LName VARCHAR(100),
StreetAddress VARCHAR(255),
Check (FName not like '%[^a-z]%')
)
 
Hãy chèn một số bản ghi vào bảng và xem Ràng buộc Kiểm tra của chúng ta có hoạt động như mong đợi hay không. Nó sẽ chỉ cho phép chèn những bản ghi trong đó FName chỉ chứa các bảng chữ cái.

--insert some sample records
insert into dbo.Customer
(FName,LName,StreetAddress)
Values ('Aamir','Shahzad','xyz address')
go
insert into dbo.Customer
(FName,LName,StreetAddress)
Values ('Aamir4','Shahzad','xyz address')
go
insert into dbo.Customer
(FName,LName,StreetAddress)
Values ('abc3c','Shahzad','xyz address')
go
insert into dbo.Customer
(FName,LName,StreetAddress)
Values ('-tName','Shahzad','xyz address')
 Khi tôi thực thi các tập lệnh chèn ở trên, dưới đây là các thông báo tôi nhận được từ SQL Server. 

(1 (các) hàng bị ảnh hưởng)
Msg 547, Level 16, State 0, Line 18
/> Câu lệnh INSERT xung đột với ràng buộc CHECK "CK__Customer__FName__5FB337D6". Xung đột xảy ra trong cơ sở dữ liệu "YourDatabaseName", bảng "dbo.Customer", cột 'FName'.
Câu lệnh đã bị chấm dứt.
Msg 547, Level 16, State 0, Line 22
Câu lệnh INSERT xung đột với ràng buộc CHECK "CK__Customer__FName__5FB337D6". Xung đột đã xảy ra trong cơ sở dữ liệu "YourDatabaseName", bảng "dbo.Customer", cột 'FName'.
Câu lệnh đã bị chấm dứt.
Msg 547, Level 16, State 0, Line 26
Câu lệnh INSERT xung đột với ràng buộc CHECK "CK__Customer__FName__5FB337D6". Xung đột xảy ra trong cơ sở dữ liệu "YourDatabaseName", bảng "dbo.Customer", cột 'FName'.
Câu lệnh đã bị chấm dứt.

Nó chỉ chèn bản ghi đầu tiên chứa tất cả các bảng chữ cái cho FName, phần còn lại của các bản ghi đều bị Ràng buộc Kiểm tra của chúng tôi từ chối vì chúng chứa các ký tự khác ngoài bảng chữ cái.

Hãy kiểm tra dữ liệu trong bảng để đảm bảo rằng chỉ một bản ghi được chèn.
Ràng buộc Kiểm tra trong SQL Server là gì và cách tạo Ràng buộc Kiểm tra trong SQL Server

Video Demo:Ràng buộc Kiểm tra là gì và Cách tạo Ràng buộc Kiểm tra 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. Ràng buộc KIỂM TRA trong SQL Server

  2. Hạn chế của SQL Server Express

  3. Một cái nhìn logic không tưởng tượng về các quy ước đặt tên máy chủ SQL

  4. Sao lưu / khôi phục SQL Server so với tách / đính kèm

  5. Trả lại tất cả các hàng từ một phân vùng cụ thể trong SQL Server (T-SQL)