sql-server - 创建复合键

标签 sql-server tsql composite-key

我有一个像这样的表:

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/

相关文章:

sql-server - 在非 SSIS 服务器上运行 SSIS 包时出错

.net - SQL Server Management Studio 是否随 Visual Studio 一起提供?

sql - 寻找一种更有效的方法将 IP 地址分解为八位字节

sql-server - 从 T-SQL 中的点创建地理折线

sql-server - 从日期和时间字段更新 SQL Server 数据库中的日期时间字段

cassandra - 在 Cassandra 中建模一对多关系的最佳方法是什么?

mysql - 列名宽度会影响 Microsoft SQL Server/Oracle/MySQL 中的 SQL 查询性能吗?

sql-server - Azure 上的 Sql 数据库备份

SQL组合键查询

coldfusion - cfwheels - 使用复合键表更新嵌套属性