首页 >数据库 >mysql教程 >如何确保 SQL Server 表中每个 FormID 只有一条记录 isDefault = 1?

如何确保 SQL Server 表中每个 FormID 只有一条记录 isDefault = 1?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-04 01:26:10278浏览

How to Ensure Only One Record Has isDefault = 1 per FormID in a SQL Server Table?

确保数据库表中只有一条默认记录

问题

如何实现约束来限制数据库表中只有一条记录可以拥有特定的“isDefault”字段值为 1?该约束适用于由“FormID”字段标识的记录子集。

解决方案:SQL Server 2008 或更高版本的唯一筛选索引

SQL Server 2008 及更高版本提供了使用唯一筛选的解决方案索引:

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1

考虑下表结构:

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)

插入多个“FormID”和“isDefault”为 1 的记录将导致以下错误:

Cannot insert duplicate key row in object 'dbo.TableName' with unique
index 'IX_TableName_FormID_isDefault'. The duplicate key value is (1).

此错误有效地强制执行约束,确保每个“FormID”只能有一条记录将“isDefault”设置为 1。

(来源: https://technet.microsoft.com/en-us/library/cc280372.aspx)

以上是如何确保 SQL Server 表中每个 FormID 只有一条记录 isDefault = 1?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn