位置: 编程技术 - 正文

SQL Server如何保证可空字段中非空值唯一(sqlserver如何保留两位小数)

编辑:rootadmin
表结构如下面代码创建 解决方案1: 对于这个问题,大家的第一个想法可能是:在Caption这个字段上面加一个唯一键不就可以了吗?好,我们按着这个思路做下去,先创建唯一索引。 索引创建好了,我们来测试下效果 运行之后我们会收到下面的错误信息: 以下为引用的内容: 消息 ,级别 ,状态 1,第 1 行 不能在具有唯一索引 'un_test_tb' 的对象 'dbo.test_tb' 中插入重复键的行。 语句已终止。 所以该解决方案是不行的。 解决方案2: 添加约束,让SQL Server在插入数据的时候,先验证下已有数据中是否有现在要插入的这个值。由于这个约束不是简单的一个运算,因此我们先创建一个函数,然后再在约束中调用这个函数。 创建验证逻辑函数: 在约束中引用函数: 现在来测试下效果。先来测试NULL值 可以成功运行,而且也出了多行为NULL的情况。现在再来测试不为空的插入情况。 结果是在第三条语句的时候报错了,表中的Caption字段也有‘AAA'和‘BBB'了,这也正好是我们要的结果。 所以解决方案2是正确的。但是为了这么一个小小功能,就写这么长一段东西是不是太繁琐了呢?我们来看下面的解决方案。 解决方案3:(只适用于SQL Server ) SQL Server 中有了一个优雅的解决方案,那就是筛选索引。筛选索引是一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。筛选索引使用筛选谓词对表中的部分行进行索引。有了筛选索引,我们只需要写一条语句就达到上面的效果。 再用上面的一些测试语句来测试的话,会发现完全是达到了我们的要求。这个方案的唯一缺点就是该语句只有SQL Server 支持。不知道各位有没有又优雅又适用于各个版本的SQL Server的解决方案,望不胜赐教。

推荐整理分享SQL Server如何保证可空字段中非空值唯一(sqlserver如何保留两位小数),希望有所帮助,仅作参考,欢迎阅读内容。

SQL Server如何保证可空字段中非空值唯一(sqlserver如何保留两位小数)

文章相关热门搜索词:sql server如何保存文件,sql server如何保存表,sql server如何保存文件,sql server如何保存为.sql文件,sql server如何保存文件,sql server如何保存数据库,sql server如何保存表,sql server如何保存表,内容如对您有帮助,希望把文章链接给更多的朋友!

一些有用的sql语句整理 推荐收藏 1、说明:创建数据库CREATEDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver---创建备份数据的deviceUSEmasterEXECsp_addumpdevice'disk','testB

sqlserver 中每个服务器角色的解释 固定服务器角色描述sysadmin在SQLServer中进行任何活动。该角色的权限跨越所有其它固定服务器角色。serveradmin配置服务器范围的设置。setupadmin添加和删

一些SQLServer存储过程参数及举例 MicrosoftincludedseveralhundredstoredproceduresinthevariousversionsofMicrosoftSQLServerandithasdocumentedagoodpercentageofthem.Butmanystoredproceduresremainundocumented.SomeareusedwithintheEnterpriseM

本文链接地址:https://www.jiuchutong.com/biancheng/349211.html 转载请保留说明!

上一篇:SQLSERVER服务手工启动 批处理文件(sqlserver r服务)

下一篇:一些有用的sql语句整理 推荐收藏(一些有用的sql语句是什么)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络