НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От: Аноним  
Дата: 27.10.06 12:15
Оценка:
Есть некая таблица:

Position в неё сыпится некоторая информация...

Задача:
Если в поле Occupied этой таблицы поступило некое значение M,
то запускается таймер на 5 мин. и есл в течении этих 5 минут
приходило одно и тоже значение поля Occupied, значит должна
отработать некая процедура, которая меняет что-то в другой таблице.

Как такое реализуют средствами СУБД. Может тригер на в ставку в таблицу Position,
который создаёт JOB? или как?
Re: НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От: wildwind Россия  
Дата: 27.10.06 12:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача:

А>Если в поле Occupied этой таблицы поступило некое значение M,
А>то запускается таймер на 5 мин. и есл в течении этих 5 минут
А>приходило одно и тоже значение поля Occupied, значит должна
А>отработать некая процедура, которая меняет что-то в другой таблице.

А>Как такое реализуют средствами СУБД. Может тригер на в ставку в таблицу Position,

А>который создаёт JOB? или как?


Периодически опрашивать таблицу, находить такие последовательности и выполнять нужные действия.
Re[2]: НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От: Аноним  
Дата: 27.10.06 13:04
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, Аноним, Вы писали:


W>Периодически опрашивать таблицу, находить такие последовательности и выполнять нужные действия.


ОТКУДА ОПРАШИВАТЬ?
Re: НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От: algol Россия about:blank
Дата: 27.10.06 14:42
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Задача:

А>Если в поле Occupied этой таблицы поступило некое значение M,
А>то запускается таймер на 5 мин. и есл в течении этих 5 минут
А>приходило одно и тоже значение поля Occupied, значит должна
А>отработать некая процедура, которая меняет что-то в другой таблице.

Пишите в таблицу Position (или отдельную таблицу) время создания записи. В триггере на вставку проверяете наличие записей с тем же значением Occupied и временем в пределах последних 5 минут и запускаете процедуру.
Re[3]: НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От: wildwind Россия  
Дата: 28.10.06 12:16
Оценка:
Здравствуйте, Аноним, Вы писали:

W>>Периодически опрашивать таблицу, находить такие последовательности и выполнять нужные действия.

А>ОТКУДА ОПРАШИВАТЬ?

Например из джоба.
Re[2]: НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От: Au1  
Дата: 29.10.06 08:58
Оценка: -1
Здравствуйте, algol, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


А>>Задача:

А>>Если в поле Occupied этой таблицы поступило некое значение M,
А>>то запускается таймер на 5 мин. и есл в течении этих 5 минут
А>>приходило одно и тоже значение поля Occupied, значит должна
А>>отработать некая процедура, которая меняет что-то в другой таблице.

A>Пишите в таблицу Position (или отдельную таблицу) время создания записи. В триггере на вставку проверяете наличие записей с тем же значением Occupied и временем в пределах последних 5 минут и запускаете процедуру.


Это не будет работать, если новых записей поступать не будет. Или это будет происходить крайне редко. Так что более правильное решение делать job, который стартует раз в 5 минут и делает все то же самое.
Re[3]: НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От: algol Россия about:blank
Дата: 29.10.06 11:32
Оценка: +3
Здравствуйте, Au1, Вы писали:

Au1>Это не будет работать, если новых записей поступать не будет. Или это будет происходить крайне редко. Так что более правильное решение делать job, который стартует раз в 5 минут и делает все то же самое.


Если повнимательней почитать условие задачи, то можно понять, что для запуска процедуры нужно иметь две записи с одинаковым Occupied в течении 5 мин. Т.е. если новые записи поступать не будут, не будут возникать и условия запуска процедуры. Идея в том, чтобы привязываться не к первой записи, а ко второй, появление которой выполнит условие запуска процедуры.
С job-ом, который стартует раз в 5 минут, не все так просто. Во-первых, мы получим задержку между моментом выполнения условия и моментом запуска процедуры (до 5 мин. в худшем случае). В-вторых, запуск job в заданное время с абсолютной точностью не гарантируется. Т.е. реально может пройти 5мин. 1 сек. или 6 мин., если сервер был занят более важными делами. Значит нужно отслеживать, какие записи были обработаны в предыдущий запуск job, а какие еще нет. Т.е. потребуется еще одно поле для флага обработки и поле для хранения времени создания записи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.