Trong Microsoft SQL Server, tôi biết truy vấn để kiểm tra xem có tồn tại ràng buộc mặc định cho một cột hay không và loại bỏ ràng buộc mặc định là:
IF EXISTS(SELECT * FROM sysconstraints
WHERE id=OBJECT_ID('SomeTable')
AND COL_NAME(id,colid)='ColName'
AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
Nhưng do lỗi đánh máy trong các phiên bản trước của cơ sở dữ liệu, tên của ràng buộc có thể là DF_SomeTable_ColName
hoặc DF_SmoeTable_ColName
.
Làm cách nào để xóa ràng buộc mặc định mà không có bất kỳ lỗi SQL nào? Các tên ràng buộc mặc định không hiển thị trong bảng Information_SCHema, điều này làm cho mọi thứ phức tạp hơn một chút.
Vì vậy, một cái gì đó như 'xóa ràng buộc mặc định trong bảng / cột này' hoặc 'xóa DF_SmoeTable_ColName
', nhưng không đưa ra bất kỳ lỗi nào nếu không thể tìm thấy nó.