维护单个默认记录:约束执行
在数据库管理系统中,确保数据完整性和一致性至关重要。一种这样的场景需要将标记为“默认”的记录数量限制为由唯一标识符标识的每组行仅一个。如何实现这一点?
独特的筛选索引解决方案
对于 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中文网其他相关文章!