首頁 > 資料庫 > mysql教程 > 如何確保 SQL Server 中每個唯一識別碼僅存在一筆預設記錄?

如何確保 SQL Server 中每個唯一識別碼僅存在一筆預設記錄?

Susan Sarandon
發布: 2025-01-04 07:55:35
原創
274 人瀏覽過

How to Ensure Only One Default Record Exists per Unique Identifier in SQL Server?

維護單一預設記錄:約束執行

在資料庫管理系統中,確保資料完整性和一致性至關重要。一種這樣的場景需要將標記為「預設」的記錄數量限制為由唯一識別碼標識的每組行僅一個。如何實現這一點?

獨特的篩選索引解決方案

對於 SQL Server 2008 及更高版本,唯一的篩選索引提供了一個優雅的解決方案。透過建立唯一的過濾索引,如下所示:

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
登入後複製

...我們確保對於任何給定的 FormID,只能存在一條「isDefault」位元標誌設定為 1 的記錄。

底層表結構表示為:

CREATE TABLE TableName(FormID INT NOT NULL, isDefault BIT NOT NULL)
登入後複製

強制執行約束

此約束強制任何插入具有相同FormID 且「isDefault」設定為1 的多個記錄的嘗試都會觸發錯誤,因為唯一索引中存在重複的鍵值。例如,如果插入多行,並且將匹配的FormID 和“isDefault”標誌設為1,則會產生錯誤訊息:

無法在具有唯一索引'IX_TableName_FormID_isDefault 的物件'dbo.TableName' 中插入重複的鍵行'。重複的鍵值為 (1)。

透過採用此技術,資料庫管理員可以有效維護資料的完整性,並確保只有一筆記錄被指定為任何給定行集的預設記錄。

以上是如何確保 SQL Server 中每個唯一識別碼僅存在一筆預設記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板