Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
比较两个 TIMESTAMP 值并返回它们是否相同。
TSEQUAL ( timestamp-expression-1, timestamp-expression-2 )
timestamp-expression-1 TIMESTAMP 值。
timestamp-expression-2 TIMESTAMP 值。
BIT
TSEQUAL 函数只能用于 WHERE 子句中,并且大部分情况下作为 UPDATE 语句的一部分来使用。
虽然 TSEQUAL 函数可以用于比较两个普通的 TIMESTAMP 值,但 TSEQUAL 的目的在于通过比较两个特殊的 Transact-SQL TIMESTAMP 值来确定某一行是否已被另一连接修改。
在使用 TSEQUAL 的单行 UPDATE 语句中,如果 timestamp-expression-1 等于 timestamp-expression-2,并且在上次读取该行时其中一个值引用用 DEFAULT TIMESTAMP 声明的列而另0一个值引用该列的值,则该行自读取后未发生变化且 TSEQUAL 返回 TRUE。如果另一位用户更改了该行,则其时间戳会被修改并且 TSEQUAL 函数返回 FALSE。如果在这种情况下 TSEQUAL 函数返回 FALSE,则不会执行 UPDATE。应用程序可通过检查受影响的行数(例如使用 @@rowcount)来确定未更新过任何行。如果未影响到任何行,应用程序可假设该行已被另一位用户修改并且需要重新读取。
SQL/2008 服务商扩充。
假设创建一个 TIMESTAMP 列 Products.LastUpdated 来存储该行上次更新的时间戳。下例使用 TSEQUAL 函数更改行值。只有在该行自上次被读取后未发生过更改的情况下才会对其进行更新。
SELECT LastUpdated into old_ts_value FROM GROUPO.Products WHERE ID = '300';
UPDATE GROUPO.Products SET Color = 'Yellow' WHERE ID = '300' AND TSEQUAL( LastUpdated, old_ts_value );