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

上传人:牧羊曲112 文档编号:3166185 上传时间:2023-03-11 格式:DOCX 页数:7 大小:38.92KB
返回 下载 相关 举报
sqlserver查看表的某行是否被更新.docx_第1页
第1页 / 共7页
sqlserver查看表的某行是否被更新.docx_第2页
第2页 / 共7页
sqlserver查看表的某行是否被更新.docx_第3页
第3页 / 共7页
sqlserver查看表的某行是否被更新.docx_第4页
第4页 / 共7页
sqlserver查看表的某行是否被更新.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《sqlserver查看表的某行是否被更新.docx》由会员分享,可在线阅读,更多相关《sqlserver查看表的某行是否被更新.docx(7页珍藏版)》请在三一办公上搜索。

1、sqlserver查看表的某行是否被更新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

2、 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_

3、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 个数据类型之

4、一的 sql_variant。 expression 任何类型的表达式。BINARY_CHECKSUM 在计算中忽略具有不可比数据类型的表达式。 注释 在表中任一行上计算的 BINARY_CHECKSUM(*) 返回相同的值,只要随后没有修改行。BINARY_CHECKSUM(*) 将为大多数行更改返回不同的值,并可用于检测大多数行修改。 函数 CHECKSUM 返回在表的行上或在表达式列表上计算的校验值。CHECKSUM 用于生成哈希索引。 语法 CHECKSUM ( * | expression ,.n ) 参数 * 指定在表的所有列上进行计算。如果有任一列是非可比数据类型,则 CHECK

5、SUM 返回错误。不可比数据类型是 text、ntext、image、cursor 以及基本类型为前 4 个数据类型之一的 sql_variant。 expression 是除非可比数据类型之外的任何类型的表达式。 返回类型 int 注释 CHECKSUM 在其参数列表上计算一个称为校验值的哈希值。此哈希值用于生成哈希索引。如果 CHECKSUM 的参数是列,且在计算的 CHECKSUM 值上生成索引,则其结果是可用于在列上等价搜索的哈希索引。 CHECKSUM 满足哈希函数的下列属性:在使用等于 (=) 运算符比较时,如果两个列表的相应元素具有相同类型且相等,则在任何两个表达式列表上应用的

6、CHECKSUM 将返回同一值。这种定义的目的在于:给定类型的 NULL 值被作为相等进行比较。如果表达式列表中的某个值发生变化,那么列表的校验值通常也会变化。但只在极少数情况下,校验值会保持不变。 BINARY_CHECKSUM 和 CHECKSUM 具有相似的功能:它们可用于计算表达式列表上的校验值,且表达式的顺序将影响结果值。在 CHECKSUM(*) 中使用的列顺序是在表或视图定义中指定的列顺序,包括计算列。 CHECKSUM 和 BINARY_CHECKSUM 仅为字符串数据类型返回不同的值,这类字符串的区域设置可能导致具有不同表示法的字符串进行等值比较。字符串数据类型是 char、

7、varchar、nchar、nvarchar 或 sql_variant。例如,字符串McCavity和Mccavity的 BINARY_CHECKSUM 值不同。反之,在不区分大小写的服务器中,上述字符串的 CHECKSUM 返回相同的校验值。CHECKSUM 值不应与 BINARY_CHECKSUM 值进行比较。 示例 使用 CHECKSUM 生成哈希索引 CHECKSUM 函数可以用于生成哈希索引。通过将计算校验值列添加到索引的表中,然后在校验值列上生成索引来生成哈希索引。 - Create a checksum index. SET ARITHABORT ON USE Northwin

8、d GO ALTER TABLE Products ADD cs_Pname AS checksum(ProductName) CREATE INDEX Pname_index ON Products (cs_Pname) 校验值索引可用作哈希索引,尤其是当要索引的列为较长的字符列时可以提高索引速度。校验值索引可用于等价搜索。 /*Use the index in a SELECT query. Add a second search condition to catch stray cases where checksums match, but the values are not ide

9、ntical.*/ SELECT * FROM Products WHERE checksum(NVegie-spread) = cs_Pname AND ProductName = NVegie-spread 在计算列上创建的索引将具体化为校验值列,对 ProductName 值所做的任何更改将传播到校验值列。索引也可以直接建立在索引的列上。然而,如果键值较长,则很可能不执行校验值索引甚至常规索引。 函数CHECKSUM_AGG 返回组中值的校验值。空值将被忽略。 语法 CHECKSUM_AGG ( ALL | DISTINCT expression ) 参数 ALL 对所有的值进行聚合函数

10、运算。ALL 是默认设置。 DISTINCT 指定 CHECKSUM_AGG 返回唯一值的校验值。 expression 常量、列或函数以及数字、位运算和字符串运算符的任意组合。expression 是一个 int 数据类型的表达式。不允许进行聚合函数运算和子查询。 返回类型 将所有 expression 值的校验值作为 int 返回。 注释 CHECKSUM_AGG 可与 BINARY_CHECKSUM 一起使用以检测表中的更改。 表中行的顺序不影响 CHECKSUM_AGG 的结果。此外,CHECKSUM_AGG 函数还可与 DISTINCT 关键字和 GROUP BY 子句一起使用。 如

11、果表达式列表中的某个值发生变化,那么列表的校验值通常也会变化。但只在极少数情况下,校验值会保持不变。 CHECKSUM_AGG 与其它聚合函数具有相似的功能。 示例 A. 使用带有 BINARY_CHECKSUM 的 CHECKSUM_AGG 检测表中的更改。 下面的示例使用带有 BINARY_CHECKSUM 函数的 CHECKSUM_AGG 检测 Products 表中的更改。 USE Northwind GO SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*) FROM Products B. 使用带 BINARY_CHECKSUM 的 CHECKSUM_AGG

12、 检测表中列的更改。 下面的示例检测 Northwind 数据库中 Products 表的 UnitsInStock 列中的更改。 -Get the checksum value before the column value is changed. USE Northwind GO SELECT CHECKSUM_AGG(CAST(UnitsInStock AS int) FROM Products 下面是结果集: 57 -Change the value of a row in the column UPDATE Products - SET UnitsInStock=135 WHERE UnitsInStock=125 -Get the checksum of the modified column. SELECT CHECKSUM_AGG(CAST(UnitsInStock AS int) FROM Products 下面是结果集: 195 新的示例(一定要+group by AID 分组查询): select checksum(AID),binary_checksum(AID),checksum_agg(AID) from A group by AID

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号