如何實現約束來限制資料庫表中只有一筆記錄可以擁有特定的「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中文網其他相關文章!