SQL删除某一列的默认约束

--删除某字段的所有关系   
   
 declare   @tbname   sysname,@fdname   sysname   
 select   @tbname='t' --要处理的表名   
 ,@fdname='a' --要处理的字段名   
   
 --定义删除处理的语句   
 declare   tb   cursor   local   for   
 --默认值约束   
 select   sql='alter   table   ['+b.name+']   drop   constraint   ['+d.name+']'   
 from   syscolumns   a   
 join   sysobjects   b   on   a.id=b.id   and   a.name=@fdname   and   b.name=@tbname     
 join   syscomments   c   on   a.cdefault=c.id   
 join   sysobjects   d   on   c.id=d.id   
 union --外键引用   
 select   s='alter   table   ['+c.name+']   drop   constraint   ['+b.name+']'   
 from   sysforeignkeys   a   
 join   sysobjects   b   on   b.id=a.constid   
 join   sysobjects   c   on   c.id=a.fkeyid   
 join   syscolumns   d   on   d.id=c.id   and   a.fkey=d.colid   and   d.name=@fdname   
 join   sysobjects   e   on   e.id=a.rkeyid   and   e.name=@tbname   
 join   syscolumns   f   on   f.id=e.id   and   a.rkey=f.colid     
 union --主键/唯一键/索引   
 select   case   when   e.xtype   in('PK','UQ')   then   'alter   table   ['+c.name+']   drop   constraint   ['+e.name+']'   
 else   'drop   index   ['+c.name+'].['+a.name+']'   end   
 from   sysindexes   a   
 join   sysindexkeys   b   on   a.id=b.id   and   a.indid=b.indid   
 join   sysobjects   c   on   b.id=c.id   and   c.xtype='U'   and   c.name=@tbname   
 join   syscolumns   d   on   b.id=d.id   and   b.colid=d.colid   and   d.name=@fdname   
 left   join   sysobjects   e   on   e.id=object_id(a.name)   
 where   a.indid   not   in(0,255)   
   
 --执行删除   
 declare   @s   varchar(8000)   
 open   tb   
 fetch   next   from   tb   into   @s   
 while   @@fetch_status=0   
 begin   
 exec(@s)   
 fetch   next   from   tb   into   @s   
 end   
 close   tb   
 deallocate   tb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 SQL Server 中的 ALTER TABLE 语句来为表新增一列。具体语法如下: ``` ALTER TABLE 表名 ADD 名 数据类型 [约束条件]; ``` 例如,如果要为名为 Customers 的表新增一个名为 Email 的,数据类型为 varchar(100),可以使用以下语句: ``` ALTER TABLE Customers ADD Email varchar(100); ``` 如果要为新增的添加约束条件,可以在语句末尾添加相应的约束条件,例如: ``` ALTER TABLE Customers ADD Email varchar(100) NOT NULL; ``` 这个语句将新增一个名为 Email 的 varchar(100) 类型的,并添加了一个 NOT NULL 的约束条件,保证该的值不能为空。 ### 回答2: 要给表新增一列SQL Server语句可以使用ALTER TABLE语句。下面是一个简单的示例: ALTER TABLE 表名 ADD 名 数据类型; 其中,表名是要新增的表的名称,名是新增的名称,数据类型是要新增的数据类型。 例如,如果要在名为"学生"的表中新增一列"年龄",数据类型为整数,可以执行以下SQL语句: ALTER TABLE 学生 ADD 年龄 INT; 这将在"学生"表中新增一列"年龄",该的数据类型为整数。 请注意,新增的位置将默认为表的最后一列。如果需要将新增放置在特定位置,可以使用ALTER TABLE语句的AFTER关键字或BEFORE关键字指定的位置。例如,以下SQL语句将在"学生"表中新增一列"年龄",并将其放置在"姓名"之后: ALTER TABLE 学生 ADD 年龄 INT AFTER 姓名; 这样,新增"年龄"将在"姓名"之后显示。 希望这可以帮助到你。 ### 回答3: 在SQL Server中给表新增一列可以使用ALTER TABLE语句。语法如下: ALTER TABLE 表名 ADD 名 数据类型 [约束条件]; 其中,表名表示要新增的表名称,名表示要添加的新的名称,数据类型表示新的数据类型,约束条件是可选的,用于指定新约束条件。 例如,要给名为"Student"的表新增一个名为"Age"的,数据类型为整数(int),可以使用以下SQL语句: ALTER TABLE Student ADD Age int; 如果要给新增的添加约束条件,例如限制Age的取值范围在18到30之间,可以使用以下SQL语句: ALTER TABLE Student ADD Age int CHECK (Age >= 18 AND Age <= 30); 执行这个ALTER TABLE语句后,就可以在Student表中成功新增一个名为Age的。 需要注意的是,如果表中已经存在相同名称的,则无法新增。在这种情况下,需要先删除或重命名已存在的,才能再次新增。同时,添加新后可能会对原有数据造成影响,如果需要保留现有数据,可以使用其他方法如INSERT INTO语句将之前的数据导入新

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值