SQL 刪除外鍵列

一 SQL刪除列的語句是: sql

alter table tableName drop column columnName  --(其中,tableName爲表名,columnName爲列名)

可是,若是某列有約束時,不能直接刪除,須要先刪除約束,再刪除列。若是某個列是外鍵,在不知道外鍵約束名稱的狀況下,那麼首先是查找外鍵約束名稱,根據名稱刪除約束,而後再刪除列。spa

二 如何查找外鍵約束code

DECLARE @TableName NVARCHAR(64) = ''
DECLARE @ColumnName  NVARCHAR(32) = ''SELECT c.name FROM sysconstraints a inner join syscolumns b on a.colid=b.colid inner join sysobjects c on a.constid=c.id where a.id=object_id(@TableName) and b.name=@ColumnName

上述代碼在使用的時候須要給@TableName賦值實際的表名,@ColumnName爲實際的列名。blog

三 知道了約束名就能夠刪除約束了it

ALTER TABLE @TableName DROP CONSTRAINT @CONSTRAINT_NAME

 四 將上面的代碼合併,因而有下面的代碼table

DECLARE @TableName NVARCHAR(64) = ''
DECLARE @ColumnName  NVARCHAR(32) = ''
DECLARE @CONSTRAINT_Key SYSNAME SELECT @CONSTRAINT_Key = c.name FROM sysconstraints a inner join syscolumns b on a.colid=b.colid inner join sysobjects c on a.constid=c.id where a.id=object_id(@TableName) and b.name=@ColumnName
DECLARE @Sql NVARCHAR(512) = N'ALTER TABLE ' + @TableName + ' DROP CONSTRAINT ' + @CONSTRAINT_Key
EXECUTE sys.sp_executesql @Sql
相關文章
相關標籤/搜索