Как можно отследить состояние таблицы. В смысле была она изменена с каких-то пор или нет

monomakh
Дата: 10.08.2005 13:33:51
Приветствие!

Нужно запомнить в определенный момент текущее состояние таблицы. А потом в какой-то другой момент нужно производить какие-либо действия В СЛУЧАЕ ЕСЛИ С МОМЕНТА ЗАПОМИНАНИЯ ПРОИСХОДИЛ INSERT или UPDATE С ТАБЛИЦЕЙ. Если какие-либо стандартные средства или придется ручками создавать временную таблицу и потом просто в нее по триггерам on-insert on-update отслеживаемой таблицы вставлять аля флаг "изменилась с момента запоминания состояния 12:00:01"

Если подробнее зачем это нужно мне в топике [url=http://]www.sql.ru/forum/actualthread.aspx?tid=206494[/url]
Sergey Balter
Дата: 10.08.2005 13:42:30
Завести прямо в таблице поле "дата последнего изменения" XDate
Заполнять его триггерами на Insert и Update.

Про Delete в задаче не упоминалось :-)
Tolmachov Dmitiry
Дата: 10.08.2005 13:52:49
Создаешь таблицу с двумя полями - дата запоминания состояния, дата последнего INSERT/UPDATE. Если дата последнего INSERT/UPDATE > даты запоминания состояния, то "производим какие-либо действия". Если такая ситуация происходит в рамках одной сессии, то можно обойтись переменными пакета или контекстом.
monomakh
Дата: 10.08.2005 15:37:41
Жаль, что нет стандартных средств. В общем почти как я и думал. Я думаю что создавать в таблицу отдельные колонки смысла нет - потому как мне нужно знать менялась ли вообще таблица, а не отдельная конкретная запись - потому не вижу смысла "раздувать" таблицу - лучше все-таки создать отдельную временную.

2Sergey Balter delete отслеживать и не надо. В системе его как бы и не должно быть. Записи просто помечаются удаленными (т.е. апдейт) если нужно её "удалить".

2Tolmachov Dmitry Дела происходят в разных сессиях (формса), но при одном соединении к базе. Тем не менее я даже не совсем понимаю как это "можно обойтись переменными пакета или контекстом." даже если бы это была одна сессия
alex-ls
Дата: 10.08.2005 16:11:22
Может тогда тебе аудит поможет?
monomakh
Дата: 10.08.2005 16:27:23
alex-ls
Может тогда тебе аудит поможет?

Может и поможет. Правда я не знаю что это такое. Сейчас по форуму попробую найти что это такое и с чем едят. :)
monomakh
Дата: 10.08.2005 16:29:28
Хм. По слову аудит форум не нашел ноль тем :-o
alex-ls
Дата: 10.08.2005 16:39:23
Документация тебе поможет! Я сам особо не разбираюсь, пока не было нужды...
monomakh
Дата: 10.08.2005 16:57:50
Кстати, а можно как либо узнать имя таблицы в которой находится триггер. Чтобы проще было триггера создать для всех моих таблиц. У нас есть специальная таблица глобальных переменных и пакет к ней. Я бы тогда на триггера сделелал бы что-то наподобии Наш_пакет.установить_переменную (%таблица_которой_принадлежит_триггер%);

Ну, дабы ручками не писать лишний раз :)
Vadim Zh
Дата: 10.08.2005 17:01:45
dba_triggers
user_triggers

С уважением, Вадим.