我很好奇是否有办法知道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'
关于如何知道表格是否已更新的任何其他想法?
答案 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
用以下SQL更新后:
update AAA_TABLE set TYPE='1234' where ID=1 //previously TYPE was 1233
结果更改为:
字段"更改"用新值更新,似乎这是一个很好的解决方案,但我仍然对任何其他想法持开放态度。
答案 1 :(得分:0)
如果数据库管理员每天设置systabstats更新,则可以使用以下查询来获取表的最后修改/更新日期。
select MAX(statmoddate) as last_modified_date
from systabstats
where id = object_id('table_name')