SQL Server 中帶有篩選索引的條件唯一約束
資料庫設計有時需要條件唯一限制:僅當另一列滿足特定條件時才對列集強制執行唯一性。 這在管理活動和非活動記錄、保持資料完整性時很常見。 SQL Server 的過濾索引提供了一個有效的解決方案。 過濾索引在表格的行子集上建立唯一索引,由過濾謂詞定義。
根據記錄狀態實現唯一性
想像一個包含 ID
、Name
和 RecordStatus
欄位的表。 只有當 ID
(活動記錄)時,我們才需要對 (RecordStatus
, RecordStatus = 1
) 進行唯一約束。 過濾索引可以實現這一點:
<code class="language-sql">CREATE UNIQUE INDEX MyIndex ON MyTable (ID) WHERE RecordStatus = 1;</code>
只有當 ID
為 1 時,這才能確保 RecordStatus
的唯一性,從而允許多個不活動 (RecordStatus = 2
) 記錄具有相同的 ID
。
超越記錄狀態:多功能條件唯一性
過濾索引不僅限於記錄狀態。 它們可以根據各種標準對資料唯一性進行精細控制,從而增強資料完整性和效能。
濾波索引的優點
與觸發器等替代方案相比,過濾索引提供:
總結
SQL Server 的過濾索引提供了一個強大而有效的方法來強制執行條件唯一約束。 它們在資料完整性、效能和儲存最佳化之間實現了平衡。
以上是過濾索引如何在 SQL Server 中強制執行條件唯一約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!