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 wie SELECT $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 einen AFTER UPDATE
Trigger oder Berechtigungen DENY UPDATE
auf Spaltenebene für diese Spalte.
Beispielsweise:
SET NOCOUNT ON;
CREATE TABLE #RowGuidColTest
(
ID UNIQUEIDENTIFIER NOT NULL DEFAULT (NEWID()) ROWGUIDCOL,
SomeValue INT
);
INSERT INTO #RowGuidColTest (SomeValue) VALUES (12), (14), (1231);
DECLARE @Search UNIQUEIDENTIFIER;
SELECT TOP (1) @Search = $ROWGUID
FROM #RowGuidColTest;
SELECT @Search AS [@Search]
SELECT *, $ROWGUID AS [$ROWGUID]
FROM #RowGuidColTest;
SELECT *
FROM #RowGuidColTest
WHERE $ROWGUID = @Search;
-- No enforced uniqueness without a PK, Unique Index, or Unique Constraint.
UPDATE tmp
SET $ROWGUID = @Search
FROM #RowGuidColTest tmp
SELECT *
FROM #RowGuidColTest
WHERE $ROWGUID = @Search;
Gibt etwas Ähnliches zurück wie:
@Search
E7166D18-5003-4D20-8983-E2402472CF82
ID SomeValue $ROWGUID
E7166D18-5003-4D20-8983-E2402472CF82 12 E7166D18-5003-4D20-8983-E2402472CF82
44FD48A4-AF38-41BF-AE4E-8A12D26B5B57 14 44FD48A4-AF38-41BF-AE4E-8A12D26B5B57
2D50C5C7-1E43-4ADA-A03B-ED202FC88D20 1231 2D50C5C7-1E43-4ADA-A03B-ED202FC88D20
ID SomeValue
E7166D18-5003-4D20-8983-E2402472CF82 12
ID SomeValue
E7166D18-5003-4D20-8983-E2402472CF82 12
E7166D18-5003-4D20-8983-E2402472CF82 14
E7166D18-5003-4D20-8983-E2402472CF82 1231
Ebenso könnte man $IDENTITY
für Tabellen verwenden, die eine IDENTITY
Spalte haben.