34,593
社区成员
发帖
与我相关
我的任务
分享
IF OBJECT_ID('tb','u') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb(ts_field TIMESTAMP,id INT,age INT)
GO
INSERT tb(id,age) SELECT 1, 12
UNION ALL SELECT 2 ,34
UNION ALL SELECT 12 ,33
UNION ALL SELECT 4 ,25
GO
SELECT * FROM tb
/*
0x00000000000007D9 1 12
0x00000000000007DA 2 34
0x00000000000007DB 12 33
0x00000000000007DC 4 25
*/
SELECT * FROM tb WHERE id=1 AND tsequal(ts_field,CONVERT(timestamp,0x00000000000007d9))
/*
0x00000000000007D9 1 12
*/
SELECT * FROM tb WHERE id=1 AND tsequal(ts_field,CONVERT(timestamp,0x00000000000007d2))
/*
消息 532,级别 16,状态 2,第 1 行
时间戳(变为 0x00000000000007d9)指示出该行已由另一用户更新。
*/
UPDATE tb SET age=22 WHERE id=1 AND tsequal(ts_field,CONVERT(timestamp,0x00000000000007d2))
/*
这句是报错的在sql2005下, sql2000下是可以的。
*/
select * from TT
ts_field id age
------------------ ----------- -----------
0x0000000000006979 1 12
0x0000000000006983 2 22
0x000000000000697B 12 33
0x000000000000697C 4 25
update TT set id = 122
where id = 2 and ts_field = 0x0000000000006983
select * from TT
ts_field id age
------------------ ----------- -----------
0x0000000000006979 1 12
0x0000000000006984 122 22
0x000000000000697B 12 33
0x000000000000697C 4 25
select * from tb
/*
ts_field id age
------------------ ----------- -----------
0x00000000000007E9 1 12
0x00000000000007EA 2 34
0x00000000000007EB 12 33
0x00000000000007EC 4 25
(4 行受影响)
*/
select * from tb where tsequal(ts_field,0x00000000000007E2)
/*
ts_field id age
------------------ ----------- -----------
消息 532,级别 16,状态 2,第 2 行
时间戳(变为 0x00000000000007e9)指示出该行已由另一用户更新。
*/
时间戳用cast转换过来也一样if object_id('tb') is not null
drop table tb
go
create table tb(ts_field timestamp,id int,age int)
insert tb(id,age) select 1, 12
insert tb(id,age) select 2, 34
insert tb(id,age) select 12, 33
insert tb(id,age) select 4, 25
go
select * from tb where tsequal(ts_field,0x0000000000000BBA)