在SQL Server 中,如果給表的一個字段設置了默認值,就會在系統表sysobjects中生成一個默認約束。
如果想對這個設置了默認值的字段進行相關操作,比如更改該列的類型,刪除該列等操作 時就會報錯。所以在對此字段進行相關操作前, 可以使用下面的腳本先對默認值的約束刪除:
DECLARE
@tablename
VARCHAR
(100), @columnname
VARCHAR
(100), @tab
VARCHAR
(100)
SET
@tablename=
'表名'
SET
@columnname=
'字段名'
declare
@defname
varchar
(100)
declare
@cmd
varchar
(100)
select
@defname =
name
FROM
sysobjects A
JOIN
sysconstraints sc
ON
A.id = sc.constid
WHERE
object_name(A.parent_obj) = @tablename
AND
A.xtype =
'D'
AND
sc.colid =(
SELECT
colid
FROM
syscolumns
WHERE
id = object_id(@tablename)
AND
name
= @columnname)
select
@cmd=
'alter table '
+ @tablename+
' drop constraint '
+ @defname if @cmd
is
null
print
'No default constraint to drop'
exec
(@cmd)