我一直在 AdventureWorks2012 数据库中进行挖掘,并查看了多个表中使用的 Row_GUID。
我的问题有两个部分:
何时应包含 Row_GUID 列?
Row_GUID 列的用途和好处是什么?
ROWGUIDCOL主要用于MERGE 复制,也是MERGE 复制所必需的FILESTREAM,但可以在您希望将不可变列与主键分开的任何情况下使用(例如,在主键值可以更改但您仍然希望成为能够分辨出更改前后哪一行是哪一行)。
ROWGUIDCOL
FILESTREAM
USE tempdb; GO CREATE TABLE dbo.example ( name sysname PRIMARY KEY, rowguid uniqueidentifier NOT NULL DEFAULT NEWID() ROWGUIDCOL ); INSERT dbo.example(name) VALUES(N'bob'),(N'frank'); SELECT * FROM dbo.example; UPDATE dbo.example SET name = N'pat' WHERE name = N'bob'; UPDATE dbo.example SET name = N'bob' WHERE name = N'frank'; SELECT * FROM dbo.example; DROP TABLE dbo.example;
现在,如果复制、您的应用程序或您正在关注的内容,它会注意到: