/*
當新增表的列並設定了預設值時,那麼再用
alter table tablename drop column columnname
語句時就會報錯,
例如, 訊息
5074
,級別16
,狀態1
,第1 行
物件'df__table__update__70aa4ff2'
依賴於列
'column1'。
訊息4922
,級別16
,狀態9
,第1 行
由於乙個或多個物件訪問此列,
alter table drop column column1
失敗。
由於乙個或多個物件訪問此列,
alter table drop column aa
失敗。」 */
--因為存在
default
約束。解決方式如下:找出該列的約束名稱並刪除約束
declare
@name varchar
( 50)
select
@name = b.
name
from sysobjects b join syscolumns a on b. id = a. cdefault
where
a. id =
object_id
('tablename')
anda.
name
='columname'
exec
('alter table tablename drop constraint '
+ @name)
exec
('alter table tablename drop column columname')
--比如:
declare
@name varchar
( 50)
select
@name = b.
name
from sysobjects b join syscolumns a on b. id = a. cdefault
where
a. id =
object_id('
架構名.表名
')and
a.name='
列名'
exec
('alter table
架構名.
表名drop constraint '
+ @name)
exec
('alter table
架構名.
表名drop column 列名'
) --
命令已成功完成。
SQL Server 刪除表的預設值約束
首先查出欄位的預設值約束名稱,然後根據預設值約束名稱刪除預設值約束 declare constraintname varchar 200 select constraintname b.name from syscolumns a,sysobjects b where a.id object id ...
修改表的預設值
乙個表中所有字段繫結約束的值 select name from sysobjects where object id initialization parent obj and xtype d 修改表中某乙個欄位的預設值 1 首先找出該欄位繫結約束的值 set tablename 表名 set fi...
SQL 2005 刪除帶有預設值約束的列
在sqlserver 2005中要刪除某一列 alter table 表名 drop column 列名 但是如果該列被建立了預設值約束,我們就只能先刪除預設值約束,然後才能刪除該列。第一種方法 1 刪除預設值約束 declare name varchar 100 select name b.nam...