1.最近项目用到sql server ,有这样一个场景,删除一个含有默认值的字段,对于mysql来说直接drop就可以了,但对于sql server来说,需要先删除约束条件再删除字段;

加入给user 表新增一个默认值为man的sex字段

ALTER TABLE dbo.user add  sex nvarchar(10)  default 'man';

然后删除字段,此时会报错,此时就要先删除约束再删除字段了。

declare @tablename varchar(100), @columnname varchar(100), @tab varchar(100)
set @tablename = 'user'	--表名(不要加多余的东西)
set @columnname= 'sex'	--字段名称

declare @defname varchar(100)	--约束名称
declare @cmd varchar(100)	--构造的SQL语句
select @defname = name from sysobjects so join sysconstraints sc on so.id = sc.constid where object_name(so.parent_obj) = @tablename
and so.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)

  #以上为删除约束条件的语句


ALTER TABLE dbo.user DROP COLUMN sex;  #删除字段


2. 还有创建视图时,后缀加go

DROP VIEW if exists [test];
go
create view test as
select * from user;
go


11-22 15:56