一 SQL刪除列的語句是: 但是,如果某列有約束時,不能直接刪除,需要先刪除約束,再刪除列。如果某個列是外鍵,在不知道外鍵約束名稱的情況下,那麼首先是查找外鍵約束名稱,根據名稱刪除約束,然後再刪除列。 二 如何查找外鍵約束 上述代碼在使用的時候需要給@TableName賦值實際的表名,@Column ...
一 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