sqlserver 删除索引时遇到的问题,请高手指教!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 删除索引时遇到的问题,请高手指教!!!相关的知识,希望对你有一定的参考价值。

在一个表中定义了这样的一个索引:stu_limit_table.sub_number_unique
为何在删除时显示:

不允许对索引 'stu_limit_table.sub_number_unique' 显式地使用 DROP INDEX。该索引正用于 UNIQUE KEY 约束的强制执行。
那应该如何删除这个索引呢???
能不能检查到是在那里被引用了呢?

--找出UNIQUE 约束所在的表
select o.name as [约束所在表],c.name as [关联字段]
from sys.objects o join sys.foreign_key_columns f on o.object_id=f.parent_object_id
join sys.columns c on o.object_id=c.object_id
where f.referenced_object_id=object_id('你的表名')

--查找约束名字
exec sp_helpconstraint [约束所在表]

--删除该约束
alter table [约束所在表] drop constraint XXXX

--最后删除你的索引
drop index stu_limit_table.sub_number_unique on tbname(column)
参考技术A 你这个是唯一索引 可能被引用到了。你要先去删除 引用它的东西 才能删除

sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错。

遇到一个问题,数据库为sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错,错误信息为:从数据类型 varchar 转换为 numeric 时出错。如果输入不为空,则可以正常通过,请各位能人高手支支招。

首先 你要分清 null与输入为空的区别
null:表示未知值,没有值
你所说的输入为空值:其实已经有值了,值是一个空的字符串即‘’,‘’转化成数字类型当然会报错。

建议在程序的前端保存的时候做一个校验,如果输入的是‘’,则转化为null 或者0 来保存就好了。
建议楼主百度一下 null与‘’ 的区别追问

谢谢~~~
你的意思是在C#里加一个判断:
if(a=="")

a == null;


但这里有个问题,我尝试把把此时的a赋值给decimal,却同样会出现这个报警信息。null貌似不能给decimal赋值吧?

追答

你在最后转化成的sql 语句 是有问题的
比如: UPDATE TABLEA SET COLS1='NULL'
和 UPDATE TABLEA SET COLS1=NULL
你最后的生成的sql语句肯定是 前者, 多了引号,有了引号就表示是字符串了,表示有值
你还是没有理解在sql中 空值与null的区别,建议你搜搜相关的资料

参考技术A 不能使用‘’(空),只能用0或者null值代替。

以上是关于sqlserver 删除索引时遇到的问题,请高手指教!!!的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver中将一个含有“=”的字段拆分成两个字段显示出来,请数据库高手指点

高手请告诉我:在sql server中怎样按照指定的字段去重?

sql server 2005安装时发生严重错误

请高手帮忙---asp.net 如何添加,修改,删除记录

关于sqlserver临时表的问题,请教高手!

LINUX下的JDK如何安装?请高手指教下