首頁 >資料庫 >mysql教程 >當名稱未知時如何刪除 SQL Server 中的預設約束?

當名稱未知時如何刪除 SQL Server 中的預設約束?

Barbara Streisand
Barbara Streisand原創
2025-01-03 18:56:39209瀏覽

How to Drop Default Constraints in SQL Server When Their Names Are Unknown?

在Microsoft SQL Server 中刪除具有未知名稱的預設約束

此問題解決了從SQL 表中刪除名稱為未知名稱的預設約束的挑戰。未知,由於潛在的拼字錯誤。使用者提供的現有查詢需要精確的約束名稱才能執行,這在某些情況下可能會出現問題。

解決方案

建議的解決方案包括產生並執行動態 SQL 命令以根據提供的表、列和架構資訊刪除約束。使用者共享的程式碼片段可以擴展如下:

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 命令來刪除特定模式中特定表和列的預設限制。該命令是根據提供的參數動態建構的,確保即使約束名稱未知也可以執行而不會出現任何 SQL 錯誤。

以上是當名稱未知時如何刪除 SQL Server 中的預設約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn