背景
SQL Server 允許在列上創建默認約束。然而,在早期版本中,拼字錯誤常常導致約束名稱不一致,例如「DF_SomeTable_ColName」和「DF_SmoeTable_ColName」。當嘗試在不知道其精確名稱的情況下刪除預設約束時,這會帶來挑戰。
解決方案
要在不知道其名稱的情況下有效刪除預設約束,可以使用以下方法可以使用:
範例程式碼
以下程式碼範例提供了所描述方法的實作:
declare @schema_name nvarchar(256) declare @table_name nvarchar(256) declare @col_name nvarchar(256) declare @Command nvarchar(1000) set @schema_name = N'MySchema' set @table_name = N'Department' set @col_name = N'ModifiedDate' select @Command = 'ALTER TABLE ' + @schema_name + '.[' + @table_name + '] DROP CONSTRAINT ' + d.name from sys.tables t join sys.default_constraints d on d.parent_object_id = t.object_id join sys.columns c on c.object_id = t.object_id and c.column_id = d.parent_column_id where t.name = @table_name and t.schema_id = schema_id(@schema_name) and c.name = @col_name --print @Command execute (@Command)
透過利用此技術,可以動態刪除預設約束,而不管拼字錯誤引起的名稱不一致如何。此方法可確保成功刪除約束,而不會因未知約束名稱而遇到錯誤。
以上是如何在不知道名稱的情況下刪除 SQL Server 預設約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!