在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)