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') goBâ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