我有一张像:

Id   PersonId     Phone   IsPrimary
-----------------------------------
1     1          12345        1
2     1          55555        0
3     2          66666        1
4     3          77777        1
5     3          88888        0
6     3          99999        0

我如何创建允许每个 PersonId 仅允许插入一个 IsPrimary = 1 的约束。对于所有 PersonId 应该只有一个 IsPrimary = 1。因此,结果我将无法插入下一条记录:
  Id   PersonId     Phone   IsPrimary
  -----------------------------------
  1     1          00000        1

最佳答案

您可以尝试创建一个唯一的过滤索引:

CREATE UNIQUE INDEX UQ_Person_isPrimary
ON Person (PersonId, IsPrimary)
WHERE IsPrimary = 1

关于sql-server - 创建复合键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40761556/

10-11 02:58