2017-01-05 5 views
1

Мне любопытно, есть ли способ узнать, была ли обновлена ​​/ добавлена ​​ранее таблица sybase? Таблица является общей, мне не разрешено использовать триггер или создавать что-то вроде поля updateDate. Проверка изменений количества строк не является вариантом.Проверьте, обновлена ​​ли таблица sybase ранее

Моя первая идея состояла в том, чтобы проверить таблицу 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

Вы заинтересованы в том, чтобы определить, обновлялась ли таблица _ever_ или была ли она обновлена ​​с определенным _time_? Если последнее, то одно изменение дизайна, которое вы могли бы сделать, это добавить столбец для последнего обновленного времени в таблицу. –

+0

Последнее, и то, что я подозревал. Просто хочу убедиться, что есть другой возможный способ. – Rudy

+0

Даже если есть другой способ, это может быть связано с Sybase-спецификой, что означало бы, что если вы когда-либо должны были переносить или поддерживать другую базу данных, это может там не работать. –

ответ

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

"изменения" Field был с новым значением, кажется, это одобренное решение, но я все еще открыт с любой другой идеей.

Смежные вопросы