如何实现约束来限制数据库表中只有一条记录可以拥有特定的“isDefault”字段值为 1?该约束适用于由“FormID”字段标识的记录子集。
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中文网其他相关文章!