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

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

Mary-Kate Olsen
Freigeben: 2025-01-04 01:26:10
Original
275 Leute haben es durchsucht

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

Sicherstellen eines einzelnen Standarddatensatzes in der Datenbanktabelle

Problem

Wie kann eine Einschränkung implementiert werden, um eine Datenbanktabelle so einzuschränken, dass nur ein Datensatz vorhanden sein kann? ein bestimmter „isDefault“-Feldwert von 1? Die Einschränkung gilt für eine Teilmenge von Datensätzen, die durch ein „FormID“-Feld identifiziert werden.

Lösung: Eindeutiger gefilterter Index für SQL Server 2008 oder höher

SQL Server 2008 und höher bietet eine Lösung mit eindeutigem Filter Indizes:

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

Beachten Sie die folgende Tabelle Struktur:

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

Das Einfügen mehrerer Datensätze mit derselben „FormID“ und „isDefault“ als 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

Dieser Fehler erzwingt effektiv die Einschränkung und stellt sicher Nur für einen Datensatz pro „FormID“ kann „isDefault“ auf 1 gesetzt sein.

(Quelle: https://technet.microsoft.com/en-us/library/cc280372.aspx)

Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass nur ein Datensatz isDefault = 1 pro FormID in einer SQL Server-Tabelle hat?. 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