【发布时间】:2017-04-07 06:59:03
【问题描述】:
我有一张这样的桌子:
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
【问题讨论】:
-
一种方法是只允许通过stored procedure 更新此表。您可以使用 SP 来执行您的业务逻辑。
-
在插入期间创建一个代替触发器将允许您在插入值之前检查此条件
标签: sql-server tsql composite-key