我正在使用SQL Server 2008.我有以下基本架构:
Table1
(Field1, Field2
)Table2
(Field3
)我需要Field1
是唯一的(允许空值)。我可以这样做:
create unique nonclustered index IX_Table1_Field1
on [Table1] (Field1)
where Field1 is not null
但是,我还需要Field1
在Field2
和Field3
之间保持唯一。即如果我要在Field1
中使用Field1, Field2
中使用的值,或Field3
,则不允许使用该值。
这是否可以使用索引? (我怎么能实现这个目标?)
答案 0 :(得分:0)
说实话,这听起来像是一个错误的设计。虽然理论上可以通过触发器实现您所说的内容,但是您有这种不寻常的约束这一事实表明这些表可能无法正确建模。
也许如果您解释了两个表格和三个字段代表的内容,我们可以更好地了解您是如何实现此设计的,并且可能能够提出替代方案。
需要考虑的事项:虽然您只提到Field1
的限制,但通常多字段约束涉及所有字段。 Field2
是否也受到字段1,2和3的限制?那么Field3
呢?如何更改或删除记录有任何限制吗?