刪除表中含有預設值的列提示出錯的一種處理方式

2021-04-29 15:09:18 字數 1384 閱讀 4380

/*

當新增表的列並設定了預設值時,那麼再用

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...