仅将一条记录标记为默认值的约束
如何在表上设置约束,以便只有其中一条记录记录的 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中文网其他相关文章!