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

Câu lệnh ALTER TABLE xung đột với ràng buộc CHECK trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 89

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 thêm Check Constraint vào một dbo bảng hiện có. thêm Kiểm tra ràng buộc, bạn gặp lỗi bên dưới.

Bản tin 547, Mức 16, Trạng thái 0, Dòng 19
Câu lệnh ALTER TABLE xung đột với ràng buộc CHECK "Chk_dbo_EFastee_FName".
Xung đột xảy ra trong cơ sở dữ liệu "YourDatabaseName", bảng "dbo.Erantyee", cột 'FName'.

Giải pháp:

Trước tiên, hãy tạo kịch bản cho lỗi. Tạo bảng dbo. -Chèn dữ liệu trong tableinsert sql vào các giá trị dbo.Eprisee (FName, LName, StreetAddress) ('Aamir', 'Shahzad', 'xyz address') đi vào giá trị dbo.Eprisee (FName, LName, StreetAddress) ('Raza A' , Null, 'abc address') go
 

Bây giờ hãy chạy câu lệnh bảng thay đổi để thêm Kiểm tra Ràng buộc. Khi bạn thực hiện câu lệnh này, bạn sẽ gặp lỗi ở trên. vì dữ liệu hiện có không đủ điều kiện cho Kiểm tra Ràng buộc. Chúng tôi có khoảng trắng trong tên đầu tiên cho 'Raza A' và Kiểm tra Ràng buộc của chúng tôi cho biết rằng dữ liệu trong FName phải luôn là bảng chữ cái.
 Thay đổi bảng dbo. % ') 
 
 
 
1) Giải pháp đầu tiên:Giải pháp DataFist hiện tại đúng có thể là, bạn tìm dữ liệu không đủ điều kiện cho Ràng buộc Kiểm tra và sửa lỗi đó rồi thêm Ràng buộc Kiểm tra.
2) Nếu doanh nghiệp không muốn sửa dữ liệu hiện có và muốn triển khai Ràng buộc Kiểm tra từ sau này, bạn có thể tạo Ràng buộc Kiểm tra bằng Nocheck. Bằng cách đó, nó sẽ không xác thực dữ liệu hiện có theo quy tắc Kiểm tra Ràng buộc của chúng tôi mà chỉ áp dụng cho dữ liệu mới.
 Thay thế bảng dbo.E Employee with nocheckAdd Constraint Chk_dbo_Eaffee_FNameCheck (FName không giống như '% [^ a-z]%') 
 
 
 
Hãy chèn một vài bản ghi và kiểm tra xem Ràng buộc của chúng ta có hoạt động như mong đợi hay không.
 chèn vào các giá trị dbo.Eprisee (FName, LName, StreetAddress) ('Test 123', Null, 'test address') đi vào giá trị dbo.Eprisee (FName, LName, StreetAddress) ('Najaf', Null, 'test address') đi 
 
 
 
Lần chèn đầu tiên sẽ không thành công vì nó không đủ điều kiện với quy tắc Kiểm tra Ràng buộc của chúng tôi. Bản ghi thứ hai sẽ được chèn thành công. Hãy kiểm tra dữ liệu trong bảng ngay bây giờ.
Cách thêm Kiểm tra Ràng buộc vào Cột có Dữ liệu Hiện có trong SQL Server

Video Demo:Cách sửa lỗi câu lệnh bảng Alter bị xung đột với Kiểm tra Ràng buộc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chia phạm vi ngày thành một hàng mỗi tháng trong máy chủ sql

  2. Làm thế nào để xóa dữ liệu lớn của bảng trong SQL mà không có nhật ký?

  3. Cách thay đổi màu và phông chữ trong SQL Server Management Studio (SSMS) - Hướng dẫn SQL Server / TSQL Phần 12

  4. Lỗi tên cột không rõ ràng trên một máy chủ cụ thể

  5. SQL Server IF so với IIF ():Sự khác biệt là gì?