J'ai fouillé dans la base de données AdventureWorks2012 et je vois Row_GUID utilisé dans plusieurs tables.
Il y a 2 parties à ma question:
Quand dois-je inclure une colonne Row_GUID?
Quels sont les usages et les avantages d'une colonne Row_GUID?
la source
Le marquage d'une colonne
ROWGUIDCOL
permet de la référencer via$ROWGUID
dans les requêtes. Cela permet de rendre les requêtes plus génériques car vous n'avez pas besoin de rechercher, pour chaque table, ce qu'est la colonne "unique" (cela est très utile pour des fonctionnalités telles que la réplication et FileStream comme indiqué par @Aaron et @Martin, respectivement ). Vous pouvez avoir une requête construite dans la couche d'application, ou même dans Dynamic SQL, qui fait quelque chose commeSELECT $ROWGUID AS [ID] FROM {table_name}
et simplement itère sur une liste de tables.N'oubliez pas que la
ROWGUIDCOL
désignation n'impose pas l' unicité. Vous devrez toujours appliquer cela via une clé primaire, un index unique ou une contrainte unique. Cette option n'impose pas non plus que la colonne soit immuable. Pour cela, vous auriez besoin d'unAFTER UPDATE
déclencheur ou d'autorisations de niveauDENY UPDATE
colonne sur cette colonne.Par exemple:
Renvoie quelque chose de similaire à:
De même, on pourrait utiliser
$IDENTITY
pour les tables qui ont uneIDENTITY
colonne.la source