1> select @@version
2> go
--------------------------------------------------------------------------------
Adaptive Server Enterprise/15.5/EBF 18164 SMP ESD#2/P/x86_64/Enterprise Linux/a
sear155/2514/64-bit/FBO/Wed Aug 25 11:17:26 2010
(1 row affected)
一张表中只能创建一个Timestamp类型字段:
1> create table test(t1 timestamp, t2 timestamp)
2> go
Msg 2738, Level 16, State 2:
Server 'SYBASE', Line 1:
A table can only have one timestamp column. Since table 'test' already has one,
you can't add the column 't2'.
1> create table test(id int, date date, time timestamp)
2> go
Sybase中的Timestamp不是一种时间类型(这点和Oracle、MySQL不一样):
1> insert into test values(1, getdate(), getdate())
2> go
Warning: A non-null value cannot be inserted into a TIMESTAMP column by the
user. The database timestamp value has been inserted into the TIMESTAMP field
instead.
(1 row affected)
1> select * from test
2> go
id date time
----------- ------------ ------------------
1 Jul 24 2014 0x00000000000a8b75
(1 row affected)
Timestamp类型字段是一个顺序号(只增不减),本质上算是一种“戳”,用来记录跟踪数据库中数据页的修改情况(主要被系统使用进行自身维护工作,用户不可以直接修改、处理这种数据类型的数据):
1> update test set date = getdate()
2> go
(1 row affected)
1> select * from test
2> go
id date time
----------- ------------ ------------------
1 Jul 24 2014 0x00000000000a8bdb
(1 row affected)
插入的时候不指定具体值,或者插入null,数据库都会在不报错的情况下完成该字段的填充:
1> insert into test values(2, getdate(), null)
2> go
(1 row affected)
1> insert into test(id, date) values(3, getdate())
2> go
(1 row affected)
1> select * from test
2> go
id date time
----------- ------------ ------------------
1 Jul 24 2014 0x00000000000a8bdb
2 Jul 24 2014 0x00000000000a8bec
3 Jul 24 2014 0x00000000000a8bf5
(3 rows affected)