只將一筆記錄標記為預設值的約束
如何在表上設定約束,以便只有其中一筆記錄的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中文網其他相關文章!