Heim > Datenbank > MySQL-Tutorial > Wie kann sichergestellt werden, dass nur ein Datensatz in einer SQL Server-Tabelle isDefault = 1 hat?

Wie kann sichergestellt werden, dass nur ein Datensatz in einer SQL Server-Tabelle isDefault = 1 hat?

Mary-Kate Olsen
Freigeben: 2025-01-01 03:20:10
Original
198 Leute haben es durchsucht

How to Ensure Only One Record Has isDefault = 1 in a SQL Server Table?

Einschränkung für nur einen als Standard markierten Datensatz

Wie kann eine Einschränkung für eine Tabelle festgelegt werden, sodass nur einer der Das isDefault-Bitfeld von Datensätzen ist auf 1 gesetzt?

Lösung: Verwenden eines eindeutigen Filters Index

Für SQL Server 2008 oder höher kann ein eindeutiger gefilterter Index verwendet werden:

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1
Nach dem Login kopieren

wobei die Tabelle wie folgt definiert ist:

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)
Nach dem Login kopieren

Das Einfügen mehrerer Zeilen mit derselben FormID und isDefault auf 1 führt zu folgendem Fehler:

Cannot insert duplicate key row in object 'dbo.TableName' with unique
index 'IX_TableName_FormID_isDefault'. The duplicate key value is (1).
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass nur ein Datensatz in einer SQL Server-Tabelle isDefault = 1 hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage