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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-01 03:20:10171浏览

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

仅将一条记录标记为默认值的约束

如何在表上设置约束,以便只有其中一条记录记录的 isDefault 位字段设置为1?

解决方案:使用唯一筛选索引

对于 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).

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

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