检查sybase表是否先前更新过

时间:2017-01-05 04:29:55

标签: sql sybase

我很好奇是否有办法知道sybase表是否先前已更新/添加过?该表是通用的,我不允许使用触发器或创建类似updateDate字段的东西。检查行数更改不是一种选择。

我的第一个想法是检查sysobjects表,但是从我使用下面的sql看到的,我认为没有列存储任何有用的信息来解决我的情况。

select name,userstat,uid, type, sysstat, indexdel, schemacnt,sysstat2,sysstat3, crdate,expdate,deltrig,instrig,ckfirst,cache, objspare,versionts,loginame,identburnmax,spacestate,erlchgts,lobcomp_lvl
from sysobjects o where type = 'U'

关于如何知道表格是否已更新的任何其他想法?

2 个答案:

答案 0 :(得分:1)

使用datachange函数找到了一种方法。

select convert(varchar(30),o.name) AS table_name,
row_count(db_id(), o.id) AS row_count,
datachange('AAA_TABLE', null, null) AS changes
from sysobjects o
where type = 'U' and o.name='AAA_TABLE'
order by table_name

在更新表结果之前是:     enter image description here

用以下SQL更新后:

update AAA_TABLE set TYPE='1234' where ID=1 //previously TYPE was 1233

结果更改为:

enter image description here

字段"更改"用新值更新,似乎这是一个很好的解决方案,但我仍然对任何其他想法持开放态度。

答案 1 :(得分:0)

如果数据库管理员每天设置systabstats更新,则可以使用以下查询来获取表的最后修改/更新日期。

select MAX(statmoddate) as last_modified_date
from systabstats
where id = object_id('table_name')