SQL 刪除外鍵列


一 SQL刪除列的語句是: 

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

但是,如果某列有約束時,不能直接刪除,需要先刪除約束,再刪除列。如果某個列是外鍵,在不知道外鍵約束名稱的情況下,那么首先是查找外鍵約束名稱,根據名稱刪除約束,然后再刪除列。

二 如何查找外鍵約束

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為實際的列名。

三 知道了約束名就可以刪除約束了

ALTER TABLE @TableName DROP CONSTRAINT @CONSTRAINT_NAME

 四 將上面的代碼合並,於是有下面的代碼

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM