Mic*_*urn 10 sql sql-server sql-server-2005 check-constraints unique-constraint
我有这个拿出几次在我的职业生涯,并没有我的地方的同龄人似乎可以回答这个问题.说我有,有一个"描述"字段是一个候选键,但表有时用户会经由过程中途停止.因此,对于大约25%的记录,此值为null,但对于所有非NULL的记录,它必须是唯一的.
另一个例子是,必须维护多个记录的"版本"的表,和位值表示哪一个是"活动"之一.因此总是填充"候选键",但可能有三个版本相同(在活动位中为0)并且只有一个是活动的(活动位中为1).
我有其他方法来解决这些问题(在第一种情况下,在存储过程或业务层中强制执行规则代码,在第二种情况下,在需要历史记录时使用触发器和UNION表填充表) .我不想要替代方案(除非有明显更好的解决方案),我只是想知道SQL的任何风格是否能以这种方式表达"条件唯一性".我正在使用MS SQL,所以如果有办法在那里做,那很好.我大多只是在学术上对这个问题感兴趣.
Art*_*hur 30
如果您使用的是SQL Server 2008,则索引过滤器可能是您的解决方案:
http://msdn.microsoft.com/en-us/library/ms188783.aspx
这是我使用多个NULL值强制执行唯一索引的方法
CREATE UNIQUE INDEX [IDX_Blah] ON [tblBlah] ([MyCol]) WHERE [MyCol] IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16233 次 |
| 最近记录: |