首頁 >資料庫 >mysql教程 >如何在 SQL Server 中強制執行條件唯一性?

如何在 SQL Server 中強制執行條件唯一性?

Patricia Arquette
Patricia Arquette原創
2025-01-10 08:17:40473瀏覽

How Can I Enforce Conditional Uniqueness in SQL Server?

在 SQL Server 中實作條件唯一約束

SQL Server 的獨特限制可防止指定列中出現重複條目。 但是如何僅在特定條件下強制唯一性呢? 解決方案在於利用過濾索引。

根據 SQL Server 文檔,過濾索引是一種非聚集索引,僅對由過濾謂詞定義的表格行子集進行索引。

此功能可讓您將唯一索引與條件篩選器結合起來,以選擇性地強制唯一性。 考慮一張桌子:

<code class="language-sql">Table(ID, Name, RecordStatus)</code>

其中 RecordStatus 可以是 1(活動)或 2(刪除)。為了確保僅當 ID 為 1 時唯一的 RecordStatus 值,您需要建立一個過濾索引:

<code class="language-sql">CREATE UNIQUE INDEX MyIndex
ON MyTable(ID)
WHERE RecordStatus = 1;</code>

這僅對活動記錄(其中 ID)強制執行 RecordStatus = 1 的唯一性。 嘗試使用 ID 插入重複的 RecordStatus = 1 將導致錯誤:

<code>Cannot insert duplicate key row in object 'MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>

重要的是要記住,過濾索引是在 SQL Server 2008 中引入的。對於早期版本(如 SQL Server 2005),需要使用觸發器等替代方法來實現條件唯一性。

以上是如何在 SQL Server 中強制執行條件唯一性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn