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
Mary-Kate OlsenOriginal
2025-01-04 01:26:10278Durchsuche

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

Beachten Sie die folgende Tabelle Struktur:

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)

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).

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!

Stellungnahme:
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