Joe*_*con 2 sql sql-server conditional unique-constraint sql-server-2008-r2
我有一个表,我想确保五列的组合在该表中保持唯一。例如:
ALTER TABLE [dbo].[MyTable]
ADD CONSTRAINT [UQ__MyTable.MFG.Model.Class.Depiction.Iteration]
UNIQUE NONCLUSTERED
(
[ManufacturerID] ASC,
[Model] ASC,
[BlockClassID] ASC,
[BlockDepictionID] ASC,
[BlockIterationID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
我想排除第六个单独列具有特定值的组合。例如,我只想在列 [Flag] = 0 时强制执行上述约束,并在列 [Flag] = 1 时排除强制执行。
小智 14
作为解决方法,您可以通过创建唯一的筛选索引在 SQL Server 2008 及更高版本中获得正确的 ANSI 行为。
CREATE UNIQUE NONCLUSTERED INDEX [IX__MyTable.MFG.Model.Class.Depiction.Iteration]
ON [dbo].[MyTable] ([ManufacturerID],[Model],[BlockClassID],[BlockDepictionID],[BlockIterationID])
WHERE [Flag] = 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6415 次 |
| 最近记录: |