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

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

Mary-Kate Olsen
发布: 2025-01-04 01:26:10
原创
275 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板