Ich habe in der AdventureWorks2012-Datenbank herumgebuddelt und festgestellt, dass Row_GUID in mehreren Tabellen verwendet wird.
Meine Frage besteht aus 2 Teilen:
Wann sollte ich eine Row_GUID-Spalte einfügen?
Was sind die Verwendungen und Vorteile einer Row_GUID-Spalte?
quelle
Durch Markieren einer Spalte als
ROWGUIDCOL
kann$ROWGUID
in Abfragen auf sie verwiesen werden. Auf diese Weise können Sie Abfragen generischer gestalten, da Sie nicht für jede Tabelle nachsehen müssen, was die "eindeutige" Spalte ist (dies ist sehr nützlich für Funktionen wie Replication und FileStream, wie von @Aaron bzw. @Martin angegeben) ). Sie könnten eine Abfrage in der App-Ebene oder sogar in Dynamic SQL erstellen lassen, die so etwas wieSELECT $ROWGUID AS [ID] FROM {table_name}
eine Liste von Tabellen ausführt und diese einfach durchläuft.Denken Sie daran , dass die
ROWGUIDCOL
Bezeichnung nicht nicht Eindeutigkeit erzwingen. Sie müssen dies weiterhin über einen Primärschlüssel, einen eindeutigen Index oder eine eindeutige Einschränkung erzwingen. Diese Option erzwingt auch nicht, dass die Spalte unveränderlich ist. Dafür benötigen Sie entweder einenAFTER UPDATE
Trigger oder BerechtigungenDENY UPDATE
auf Spaltenebene für diese Spalte.Beispielsweise:
Gibt etwas Ähnliches zurück wie:
Ebenso könnte man
$IDENTITY
für Tabellen verwenden, die eineIDENTITY
Spalte haben.quelle