当前位置:  数据库>sqlserver

为指定数据表非空值建立唯一性索引的方法介绍

    来源: 互联网  发布时间:2014-08-29

    本文导语:  SQL Server 2008中,可以很方便的为指定数据表的指定字段的所有非空值添加唯一性索引,以保证该字段的所有的非空值在该表中都是唯一的。 sql: CREATE UNIQUE NONCLUSTERED INDEX un_ID_Invoice ON FeeItem(ID_Invoice) WHERE ID_Invoice is not null GO ...

SQL Server 2008中,可以很方便的为指定数据表的指定字段的所有非空值添加唯一性索引,以保证该字段的所有的非空值在该表中都是唯一的。

sql:

CREATE UNIQUE NONCLUSTERED INDEX un_ID_Invoice
ON FeeItem(ID_Invoice)
WHERE ID_Invoice is not null
GO

在SQL Server中执行该语句,便会在FeeItem表中的ID_Invoice字段上添加非空唯一性索引,可以保证该表中的所有非空字段都是唯一的。

存在问题:
在该表中建立非空唯一性索引后,使用C#向该表中添加(INSERT)、删除(DELETE)、修改(UPDATE)数据时都会提示一个错误:
“DELETE 失败,因为下列 SET 选项的设置不正确:'ARITHABORT'。请确保 SET 选项可正确用于计算列和/或查询通知和/或 xml 数据类型方法的索引视图和/或索引。”

原因分析:
关于SET ARITHABORT的描述:
“查询执行过程中发生溢出或者除以零的错误时结束查询。…  当 SET ARITHABORT 是 OFF 的时候,如果INSERT、DELETE 或 UPDATE 表达式发现算术错误、溢出、除以零或者范围错误,SQL Server会插入或更新 NULL 值。如果目标行不可为NULL,插入或者更新操作就会失败而且使用者会收到错误信息。… 當您建立或變更計算資料行索引或索引檢視時,SET ARITHABORT 也必須是 ON。 如果 SET ARITHABORT 是 OFF,含計算資料行索引的資料表或索引檢視之 CREATE、UPDATE、INSERT 和 DELETE 陳述式會失敗。”
 
解决方法:
1、必须在TSQL前Set ARITHABORT ON

Set ARITHABORT ON 
GO 
INSERT INTO ta ..

2.在ADO中

MyConnection.Execute("SET ARITHABORT ON");

3、还可以尝试修改SQL Server服务器选项

exec sp_dboption 'yourdb','ARITHABORT','true'
---或者
ALTER DATABASE yourdb  
SET ARITHABORT ON

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Lists(链表) 成员 remove_if():按指定条件删除元素
  • 如何用shell实现将指定文件中的指定的字符串替换为我指定的另外的字符串
  • C++ Maps 成员 count():返回指定元素出现的次数
  • 求一SHELL(Linux下批量将指定目录文件传到指定远程服务器的指定目录)!
  • C++ Double Ended Queues(双向队列) 成员 at():返回指定的元素
  • linux如何给指定用户赋予指定文件的权限
  • C++ I/O 成员 ignore():读取字符并忽略指定字符
  • 怎样读取指定内存地址处指定长度的内存数据???(
  • C++ Bitsets 成员 test():返回指定位的状态
  • Applet指定codebase,怎样将其指定到classpath下?不用绝对路径!
  • C++ MultiMaps 成员 equal_range():返回指向元素的key为指定值的迭代器对
  • tar解压解包指定文件到指定目录
  • C++ Vectors 成员 erase():删除指定元素
  • 请教如何在指定目录下查找包含指定文字的文件
  • C++ Vectors 成员 at():返回指定位置的元素
  • linux 指定用户只能读写指定的文件夹
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 如何查看系统中有多少个组?有多少个用户?如何把指定用户加到指定组中?
  • Linux下通过rpm安装软件详细介绍以及如何将软件安装到指定目录
  • Linux查找包含指定文字的文件(linux查找指定文件)
  • linxu-如何拷贝指定类型的文件到指定的目录下呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3