1.最近项目用到sql server ,有这样一个场景,删除一个含有默认值的字段,对于mysql来讲直接drop就能够了,但对于sql server来讲,须要先删除约束条件再删除字段;mysql
加入给user 表新增一个默认值为man的sex字段sql
ALTER TABLE dbo.user add sex nvarchar(10) default 'man';
而后删除字段,此时会报错,此时就要先删除约束再删除字段了。code
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. 还有建立视图时,后缀加goserver
DROP VIEW if exists [test]; go create view test as select * from user; go