sqlserver查看表某行是否被更新.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Sqlserver查询某行是否被更新过 创建测试表 CREATE TABLE [A] ( [AID] [int] NULL , [BList] [varchar] (4000) COLLATE Chinese_PRC_CI_AS NULL ) 表A基本数据如下: 查询表的结构: select column_name,data_type,Is_Nullable,* from information_schema.columns where table_name = A --创建表 create table A_CheckUpdate(AID int,BinaryCheckSum int,Remark varchar(50)) --将表A的初始数据插入检测更新表中 insert into A_CheckUpdate select AID,Binary_CheckSum(*),检查A表行是否改变 from A select * from A select * from A_CheckUpdate –检测更新表 update A set blist=001,004 where aid=3 –更新ID=3的行 --查询A表被更新过的记录 select * from A_CheckUpdate where exists( select AID from A where A.AID=A_CheckUpdate.AID and binary_checksum(*)A_CheckUpdate.BinaryCheckSum) 返回 AID=3的记录被更改过 函数 BINARY_CHECKSUM 返回对表中的行或表达式列表计算的二进制校验值。BINARY_CHECKSUM 可用于检测表中行的更改。 语法 BINARY_CHECKSUM ( * | expression [ ,...n ] ) 参数 * 指定对表中的所有列进行计算。BINARY_CHECKSUM 在计算中忽略具有不可比数据类型的列。不可比数据类型是 text、ntext、image、cursor 以及基本类型为前 4 个数据类型之一的 sql_variant。 expression 任何类型的表达式。BINARY_CHECKSUM 在计算中忽略具有不可比数据类型的表达式。 注释 在表中任一行上计算的 BINARY_CHECKSUM(*) 返回相同的值,只要随后没有修改行。BINARY_CHECKSUM(*) 将为大多数(但不是全部)行更改返回不同的值,并可用于检测大多数行修改。 CHECKSUM 返回在表的行上或在表达式列表上计算的校验值。CHECKSUM 用于生成哈希索引。 语法 CHECKSUM ( * | expression [ ,...n ] ) 参数 * 指定在表的所有列上进行计算。如果有任一列是非可比数据类型,则 CHECKSUM 返回错误。不可比数据类型是 text、ntext、image、cursor 以及基本类型为前 4 个数据类型之一的 sql_variant。 expression 是除非可比数据类型之外的任何类型的表达式。 返回类型 int 注释 CHECKSUM 在其参数列表上计算一个称为校验值的哈希值。此哈希值用于生成哈希索引。如果 CHECKSUM 的参数是列,且在计算的 CHECKSUM 值上生成索引,则其结果是可用于在列上等价搜索的哈希索引。 CHECKSUM 满足哈希函数的下列属性:在使用等于 (=) 运算符比较时,如果两个列表的相应元素具有相同类型且相等,则在任何两个表达式列表上应用的 CHECKSUM 将返回同一值。这种定义的目的在于:给定类型的 NULL 值被作为相等进行比较。如果表达式列表中的某个值发生变化,那么列表的校验值通常也会变化。但只在极少数情况下,校验值会保持不变。 BINARY_CHECKSUM 和 CHECKSUM 具有相似的功能:它们可用于计算表达式列表上的校验值,且表达式的顺序将影响结果值。在 CHECKSUM(*) 中使用的列顺序是在表或视图定义中指定的列顺序,包括计算列。 CHECKSUM 和 BINARY_CHECKSUM 仅为字符串数据类型返回不同的值,这类字符串的区域设置可能导致具有不同表示法的字符串进行等值比较。字符串数据类型是 char、varchar、nchar、nvarchar 或 sql_variant(如果其基本类型是字符串数据类型)。例如,字符串McCavity和Mccavity的 BINARY_CHECKSUM 值不同。反之,在不区分大小写的服务器中,上述字符串的 CHECKSUM 返回相同的校验值。CHECKSUM 值不应与 BINARY_CHECKSUM 值进行比较。 示例

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档