Pflege eines einzelnen Standarddatensatzes: Durchsetzung von Einschränkungen
In Datenbankverwaltungssystemen ist die Sicherstellung der Datenintegrität und -konsistenz von entscheidender Bedeutung. Ein solches Szenario erfordert die Begrenzung der Anzahl der als „Standard“ markierten Datensätze auf nur einen pro Satz von Zeilen, die durch eine eindeutige Kennung gekennzeichnet sind. Wie kann dies erreicht werden?
Einzigartige gefilterte Indexlösung
Für SQL Server-Versionen 2008 und höher bietet ein eindeutiger gefilterter Index eine elegante Lösung. Durch die Erstellung eines eindeutigen gefilterten Index, wie unten gezeigt:
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
... stellen wir sicher, dass für jede gegebene FormID nur ein Datensatz vorhanden sein kann, dessen Bit-Flag „isDefault“ auf 1 gesetzt ist.
Die zugrunde liegende Tabellenstruktur wird wie folgt dargestellt:
CREATE TABLE TableName(FormID INT NOT NULL, isDefault BIT NOT NULL)
Erzwingung der Einschränkung
Diese Einschränkung erzwingt, dass jeder Versuch, mehrere Datensätze mit derselben FormID und „isDefault“ auf 1 einzufügen, einen Fehler auslöst, der auf das Vorhandensein doppelter Schlüsselwerte im eindeutigen Index hinweist. Wenn beispielsweise mehrere Zeilen mit übereinstimmenden FormIDs und „isDefault“-Flags auf 1 eingefügt werden, wird eine Fehlermeldung generiert:
Kann keine doppelte Schlüsselzeile in Objekt „dbo.TableName“ mit eindeutigem Index „IX_TableName_FormID_isDefault“ einfügen '. Der doppelte Schlüsselwert ist (1).
Durch den Einsatz dieser Technik können Datenbankadministratoren die Integrität ihrer Daten effektiv aufrechterhalten und sicherstellen, dass nur ein einziger Datensatz als Standarddatensatz für einen bestimmten Satz von Zeilen festgelegt wird.
Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass in SQL Server nur ein Standarddatensatz pro eindeutiger Kennung vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!