SQL Server數據庫中使用sql腳本刪除指定表的列


在SQL Server數據庫中刪除某一列,使用數據庫管理工具直接可視化操作是很簡單的,但是如果要用sql腳本呢?可能你會說很簡單,直接用
ALTER TABLE [要刪除的字段所在的表名]
DROP COLUMN [要刪除的字段];
GO
這樣不就OK了嗎?


可是如果這個字段上要是有約束的話呢,就會彈出類似如下的提示:
消息 5074,級別 16,狀態 1,第 1 行
對象'DF__***__***__682A18F4' 依賴於 列'***'。
消息 4922,級別 16,狀態 9,第 1 行
由於一個或多個對象訪問此列,ALTER TABLE DROP COLUMN ***失敗。


如何解決這個問題呢?
首先你可以要找到該字段的約束,然后刪除它
--查詢某個表的所有的字段約束
sp_helpconstraint [要刪除的字段所在的表名]


--查詢某表某字段的默認約束
select name as 約束名
from sysobjects 
where id in (select cdefault 
from syscolumns
where name in ( [要刪除的字段]) 
and id=(select id 
from sysobjects 

where name = [要刪除的字段所在的表名]))


查詢到約束后,就要刪除約束了


--刪除字段上的約束
ALTER TABLE  [要刪除的字段所在的表名]
DROP 約束名;

GO


現在再來刪除你要刪除的字段就沒有問題了,呵呵
ALTER TABLE [要刪除的字段所在的表名]
DROP COLUMN [要刪除的字段];
GO


免責聲明!

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



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