Heim >Datenbank >MySQL-Tutorial >Wie kann sichergestellt werden, dass nur ein Datensatz isDefault = 1 pro FormID in einer SQL Server-Tabelle hat?
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.
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!