Sql server SQL Server中是否有与rowversion等效的表?
我正在寻找类似于但适用于整个表的东西:一个自动生成的唯一数字,可以用来知道表是否已更改 例如: 它是否存在于SQL Server中 如果没有,还有其他选择吗?一些允许跟踪列上的更改的东西也很棒。Sql server SQL Server中是否有与rowversion等效的表?,sql-server,hash,row,versioning,Sql Server,Hash,Row,Versioning,我正在寻找类似于但适用于整个表的东西:一个自动生成的唯一数字,可以用来知道表是否已更改 例如: 它是否存在于SQL Server中 如果没有,还有其他选择吗?一些允许跟踪列上的更改的东西也很棒。 我一直在考虑使用,但不幸的是,它只为单个列值提供哈希值,而不是为整个列提供哈希值。SQL Server中没有这样的功能,但是您可以使用触发器轻松地实现它。我已经用它来帮助网络应用的缓存失效 首先创建表etags: CREATE TABLE etags ( etag_name varchar(128
我一直在考虑使用,但不幸的是,它只为单个列值提供哈希值,而不是为整个列提供哈希值。SQL Server中没有这样的功能,但是您可以使用触发器轻松地实现它。我已经用它来帮助网络应用的缓存失效 首先创建表etags:
CREATE TABLE etags
(
etag_name varchar(128) NOT NULL PRIMARY KEY,
etag_value uniqueidentifier NOT NULL
)
为Foo
表插入一个值:
INSERT INTO etags VALUES ('foo', NEWID())
然后为foo
表创建一个触发器,当表更改时更新etag值
CREATE TRIGGER foo_etag
ON foo FOR INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON
UPDATE etags SET etag_value = NEWID()
WHERE etag_name = 'Foo'
SQLServer中没有这样的东西,但是您可以使用触发器轻松地实现它。我已经用它来帮助网络应用的缓存失效 首先创建表etags:
CREATE TABLE etags
(
etag_name varchar(128) NOT NULL PRIMARY KEY,
etag_value uniqueidentifier NOT NULL
)
为Foo
表插入一个值:
INSERT INTO etags VALUES ('foo', NEWID())
然后为foo
表创建一个触发器,当表更改时更新etag值
CREATE TRIGGER foo_etag
ON foo FOR INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON
UPDATE etags SET etag_value = NEWID()
WHERE etag_name = 'Foo'
尝试此链接:是否选中了“更改数据捕获”。如果要使用Hashbytes,可以对1个派生列中的所有列进行concat并对其进行哈希:获取上次更新时间可能有帮助?您可以从sys.dm_db_index_usage_stats中选择last_user_update,其中database_id=db_id()和object_id=object_id('myTable');尝试此链接:是否选中了“更改数据捕获”。如果要使用Hashbytes,可以对1个派生列中的所有列进行concat并对其进行哈希:获取上次更新时间可能有帮助?您可以从sys.dm_db_index_usage_stats中选择last_user_update,其中database_id=db_id()和object_id=object_id('myTable');“我用它来帮助web应用的缓存失效。”这正是我需要它的原因。我很高兴听到:-)。我通常在服务器和浏览器端缓存。ETag和If None匹配头在这方面有帮助。“我用它来帮助web应用的缓存失效。”这正是我需要它的原因。我很高兴听到:-)。我通常在服务器和浏览器端缓存。ETag,如果没有匹配的标题,则提供帮助。