Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中是否有与rowversion等效的表?_Sql Server_Hash_Row_Versioning - Fatal编程技术网

Sql server SQL Server中是否有与rowversion等效的表?

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中

如果没有,还有其他选择吗?一些允许跟踪列上的更改的东西也很棒。
我一直在考虑使用,但不幸的是,它只为单个列值提供哈希值,而不是为整个列提供哈希值。

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,如果没有匹配的标题,则提供帮助。