alter table TableName alter column columnName int not null with nocheck试试
解决方案 »
- 一道面試題
- 关于函数的简单问题
- 一个连接查询不知道怎么写
- 感觉有点难:一个根据字符串多组合的复合的查询!期待更好的解决方法。
- 高手帮忙,立刻结贴! sp_addlinkedserver 的问题.
- 怎麼樣寫一個Update 語句
- 我有一个VB编的学生信息管理程序,是书中的一例子,数据库是用Microsoft SQL service2000,程序运行不起来
- 重发此贴,希望问题能得到解决,焦急中...
- 关于8个表的子查询,请教一下各位高手应该如何写这个语句呀!!在线等!急!!!!
- 索引文件不怎明白,愿闻其详。附10个"大洋"略表心意 :-)
- 再问SQL语句,还是关于税收的,谢啦,在线等待,解决即给分结贴
- 如何从本表和他的备份表中同时作查询?
所以不能添加 not NULL 约束
alter table TableName alter column columnName int not null --《--
declare @fdname sysname,set @tbname='tablename' --要处理的表名
set @fdname='columnname' --要处理的字段名declare hCForEach cursor global 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)exec sp_msforeach_worker '?'
--删除这些后,就可以修改字段的属性了
alter table TableName alter column columnName int not null--修改后,再手工恢复索引/约束/默认值设置等
但通过事件探测器看他的原理时发现它好像是通过临时表实现的,为了实现这个小改动要把整个表搬动一次也太过了吧,呵呵.谢谢大家参与讨论,迟下再结贴吧.