仅对非空列进行唯一约束

2024-01-07

在MS SQL Server 2008中,是否可以定义UNIQUE CONSTRAINT在列上,但如果非空值则检查 IF 和 ONLY IF。也就是说,会有很多 NULL 应该被忽略。然而,对于非空值,它应该是唯一的。


你需要创建一个过滤索引:

CREATE UNIQUE NONCLUSTERED INDEX User_PinNr_IUC
ON [User] (pinNr)
WHERE pinNr IS NOT NULL

参考创建索引 (Transact-SQL) http://msdn.microsoft.com/en-us/library/ms188783.aspx

WHERE :
通过指定创建过滤索引 索引中包含哪些行。 过滤后的索引必须是 表上的非聚集索引。创造 数据行的过滤统计信息 在过滤索引中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅对非空列进行唯一约束 的相关文章

  • 隐藏 SSRS 嵌套组同时显示详细信息行

    我有一个分层数据集 如下所示 Group1 Group2 Group3 Group4 Group5 Detail Food Fruit Red Apple Apple Food Fruit Orange Orange Orange Food
  • SQL Server:我可以使用 EXEC 来运行外部应用程序吗?

    您好 感谢您抽出时间 我一直在网上到处搜索一个示例 其中 SQL 触发器将运行外部应用程序 但我没有运气 我所看到的是 EXEC 将执行 SQL 过程 我需要这个的原因是 我有一个包含许多表的 SQL Server 2010 当某些表上发生
  • SQL Server 的 printf

    Sql Server中有类似printf的函数吗 我想要与 RAISERROR 函数相同的功能 但我不想抛出错误或打印消息 而是想将其写在 varchar 中 因为我的 ERP 不允许我处理错误消息 这是 SQL Server 2000 R
  • 到命名实例的 Sql 连接字符串

    我可以在示例代码项目中使用它连接到我的 sql server 2008 开发人员服务器 string connection data source SQLSERVER2008 Integrated Security SSPI Initial
  • “等待操作超时”...但仅来自 .NET 客户端?

    我有一个查询 当从我的应用程序执行时会抛出 SqlException 0x80131904 超时已过期 操作完成之前超时时间已过 或者服务器没有响应 在 Visual Studio 中单步执行代码时 我遇到了同样的错误 但是 当使用相同的凭
  • 在 SQL Server 中,什么时候应该使用索引视图而不是真实表?

    我知道在 SQL Server 中 您可以在视图上创建索引 然后视图保存基础表中的数据 然后就可以查询视图了 但是 为什么我需要使用视图而不是表呢 您可能希望使用视图来简化查询 在我们的项目中 共识是使用界面视图 尤其是 报告界面 想象一下
  • 如何创建为数据库中的每个视图调用 sp_refreshview 的存储过程?

    今天我运行这个 select exec sp refreshview N table schema table name from information schema tables where table type view 这会生成很多
  • 数据库文件和 ASP.NET 登录控件

    我正在尝试 ASP NET 登录控制教程 一切正常 但是 我不知道如何让登录控件使用我自己的数据库 SQL Server 2005 而不是使用它的 mdf 文件 我也不知道这个文件是从哪里创建的 因为它根本没有出现在我的解决方案中 如果我能
  • 获取记录子集以及总记录计数

    我正在努力从 SQL Server 2008 返回记录集以进行一些分页 我一次只返回 15 条记录 但我需要匹配的总数以及记录的子集 我使用了两个不同的查询 结果混合 具体取决于我需要在较大组中的哪个位置提取子集 这是一个示例 SET NO
  • 如何根据事件触发SSRS订阅?

    有没有一种方法可以让我在共享文件夹中创建文件等事件时触发 SSRS 订阅 基于时间 我们可以使用 powershell 或 C 来实现吗 SSRS 中是否有可用的开箱即用功能 尽管我认为没有 我正在使用 SQL Server 2008 R2
  • 从视图中的动态表名称中选择

    我的客户每年都会创建一个新表 其名称中包含年份 我必须在 SQL Server 数据库的新视图中使用该表 我已经通过一个查询解决了这个问题 DECLARE SQLString nvarchar 500 SET SQLString SELEC
  • 确定表的行大小

    如何确定表的最大行大小 我正在寻找一个可以执行此操作的工具或脚本 这样我就不必手动添加每列的大小 我的目标是生成一份太宽表格的报告 以便我们可以考虑重组它们 我知道我们有几个太宽 每个 8K 页面只能容纳 1 行 但我想找到其余的 另一种方
  • SQL Server 列的默认登录用户

    如何创建一个列 其中包含当时在表中创建该行的用户的默认值 I tried system user 但这显示了从表中进行选择时登录的人员 尝试这样的事情 CREATE TABLE DemoTable ID INT IDENTITY 1 1 S
  • 从 dacpac 获取计算列的 DataType

    当遍历一个Dacpac通过 C 代码 我能够找出计算列中引用了哪些列 GetReferenced Microsoft SqlServer Dac Model Column ExpressionDependencies 以及该列的表达式是什么
  • 将 SQL 保留在存储过程中与代码中的优点和缺点是什么

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • SQL Server 中“WITH SCHEMABINDING”的缺点?

    我有一个数据库 其中有数百个名称尴尬的表 CG001T GH066L 等 并且我对每个表都有其 友好 名称的视图 例如 视图 CUSTOMERS 是 SELECT FROM GG120T 我想将 WITH SCHEMABINDING 添加到
  • CLR 程序集不会在 64 位 SQL Server 2005 中加载

    我们在安装 SQL Server 2005 32 位 时使用带有一些用户定义函数的程序集 我们使用如下脚本将其部署到生产环境 CREATE ASSEMBLY Ourfunctions AUTHORIZATION dbo FROM 0x4D5
  • 在每个条目一分钟内通过联系人查找 20 个或更多条目

    我们正在收集联系人及其访问的每个页面的一些分析数据 许多分析数据来自恶意攻击或机器人 因此它们在一分钟之内就访问了网站的 20 多个页面 我希望能够每天清除一次这些数据 但不知道如何编写一个 SQL 查询来选择该联系人在一分钟内访问超过 2
  • 而不是SQL Server中的触发器丢失SCOPE_IDENTITY?

    我有一个表 我在其中创建了一个INSTEAD OF触发执行一些业务规则 问题是当我将数据插入该表时 SCOPE IDENTITY 返回一个NULL值 而不是实际插入的身份 插入 范围代码 INSERT INTO dbo Payment Da
  • SQL 查询运行时间太长,asp.net 停止响应

    我有一个 SQL 查询 大约需要 10 分钟才能完成 该查询的结果显示在 asp net 网页上 这里的问题是 当我在 SQL Server 上运行查询时 它工作正常 但是当从网页触发查询时 网页上不会显示任何结果 数据库大小约为9 GB

随机推荐