Heim > Datenbank > MySQL-Tutorial > Wie kann sichergestellt werden, dass in SQL Server nur für einen Datensatz das Flag „isDefault' auf 1 gesetzt ist?

Wie kann sichergestellt werden, dass in SQL Server nur für einen Datensatz das Flag „isDefault' auf 1 gesetzt ist?

Linda Hamilton
Freigeben: 2025-01-01 12:38:11
Original
386 Leute haben es durchsucht

How to Ensure Only One Record Has an 'isDefault' Flag Set to 1 in SQL Server?

Sicherstellung nur eines Datensatzes mit dem Flag „isDefault“

In einer Datenbanktabelle möchten Sie möglicherweise die Daten so einschränken, dass nur ein Datensatz pro Datensatz vorhanden ist Für eine definierte Gruppe kann ein bestimmtes „isDefault“-Flag auf 1 gesetzt sein. Dies stellt eine Herausforderung dar, da die Einschränkung nicht tabellenweit gilt, sondern stattdessen für eine Teilmenge von Zeilen gilt, die durch ein eindeutiges Zeichen identifiziert werden ID.

Lösung: Verwendung eines eindeutigen gefilterten Index

Moderne SQL Server-Versionen (2008 und höher) bieten eine Lösung mit eindeutigen gefilterten Indizes. Indem Sie einen solchen Index erstellen, können Sie die Einschränkung für das Feld „isDefault“ für einen bestimmten Satz von Zeilen erzwingen.

Indexerstellungssyntax

Für eine Tabelle definiert als folgt:

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

Sie können den eindeutigen gefilterten Index mit der folgenden Syntax erstellen:

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

Dies Der Index verhindert doppelte Schlüsselverletzungen, wenn versucht wird, mehrere Datensätze mit derselben FormID einzufügen und „isDefault“ auf 1 gesetzt ist. Zum Beispiel:

INSERT INTO TableName(FormID, isDefault) VALUES (1, 1)
INSERT INTO TableName(FormID, isDefault) VALUES (1, 1) -- Will result in a unique key violation error
Nach dem Login kopieren

Durch die Einrichtung dieses Indexes stellen Sie effektiv sicher, dass in jedem nur ein Datensatz vorhanden ist Das FormID-Set kann das „isDefault“-Flag auf 1 setzen, um die gewünschte Datenintegrität aufrechtzuerhalten.

Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass in SQL Server nur für einen Datensatz das Flag „isDefault' auf 1 gesetzt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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