首页 > 数据库 > mysql教程 > 如何确保 SQL Server 中每个唯一标识符仅存在一条默认记录?

如何确保 SQL Server 中每个唯一标识符仅存在一条默认记录?

Susan Sarandon
发布: 2025-01-04 07:55:35
原创
282 人浏览过

How to Ensure Only One Default Record Exists per Unique Identifier in SQL Server?

维护单个默认记录:约束执行

在数据库管理系统中,确保数据完整性和一致性至关重要。一种这样的场景需要将标记为“默认”的记录数量限制为由唯一标识符标识的每组行仅一个。如何实现这一点?

独特的筛选索引解决方案

对于 SQL Server 2008 及更高版本,唯一的筛选索引提供了一个优雅的解决方案。通过创建唯一的过滤索引,如下所示:

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
登录后复制

...我们确保对于任何给定的 FormID,只能存在一条“isDefault”位标志设置为 1 的记录。

底层表结构表示为:

CREATE TABLE TableName(FormID INT NOT NULL, isDefault BIT NOT NULL)
登录后复制

强制执行约束

此约束强制任何插入具有相同 FormID 且“isDefault”设置为 1 的多条记录的尝试都将触发错误,因为唯一索引中存在重复的键值。例如,如果插入多行,并且将匹配的 FormID 和“isDefault”标志设置为 1,则会生成错误消息:

无法在具有唯一索引 'IX_TableName_FormID_isDefault 的对象 'dbo.TableName' 中插入重复的键行'。重复的键值为 (1)。

通过采用此技术,数据库管理员可以有效维护数据的完整性,并确保只有一条记录被指定为任何给定行集的默认记录。

以上是如何确保 SQL Server 中每个唯一标识符仅存在一条默认记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

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