Задача:
Если в поле Occupied этой таблицы поступило некое значение M,
то запускается таймер на 5 мин. и есл в течении этих 5 минут
приходило одно и тоже значение поля Occupied, значит должна
отработать некая процедура, которая меняет что-то в другой таблице.
Как такое реализуют средствами СУБД. Может тригер на в ставку в таблицу Position,
который создаёт JOB? или как?
Здравствуйте, Аноним, Вы писали:
А>Задача: А>Если в поле Occupied этой таблицы поступило некое значение M, А>то запускается таймер на 5 мин. и есл в течении этих 5 минут А>приходило одно и тоже значение поля Occupied, значит должна А>отработать некая процедура, которая меняет что-то в другой таблице.
А>Как такое реализуют средствами СУБД. Может тригер на в ставку в таблицу Position, А>который создаёт JOB? или как?
Периодически опрашивать таблицу, находить такие последовательности и выполнять нужные действия.
Re[2]: НУЖНА ПОМОЩЬ ЗНАЮЩЕГО!!!
От:
Аноним
Дата:
27.10.06 13:04
Оценка:
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, Аноним, Вы писали:
W>Периодически опрашивать таблицу, находить такие последовательности и выполнять нужные действия.
Здравствуйте, Аноним, Вы писали:
А>Задача: А>Если в поле Occupied этой таблицы поступило некое значение M, А>то запускается таймер на 5 мин. и есл в течении этих 5 минут А>приходило одно и тоже значение поля Occupied, значит должна А>отработать некая процедура, которая меняет что-то в другой таблице.
Пишите в таблицу Position (или отдельную таблицу) время создания записи. В триггере на вставку проверяете наличие записей с тем же значением Occupied и временем в пределах последних 5 минут и запускаете процедуру.
Здравствуйте, Аноним, Вы писали:
W>>Периодически опрашивать таблицу, находить такие последовательности и выполнять нужные действия. А>ОТКУДА ОПРАШИВАТЬ?
Здравствуйте, algol, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
А>>Задача: А>>Если в поле Occupied этой таблицы поступило некое значение M, А>>то запускается таймер на 5 мин. и есл в течении этих 5 минут А>>приходило одно и тоже значение поля Occupied, значит должна А>>отработать некая процедура, которая меняет что-то в другой таблице.
A>Пишите в таблицу Position (или отдельную таблицу) время создания записи. В триггере на вставку проверяете наличие записей с тем же значением Occupied и временем в пределах последних 5 минут и запускаете процедуру.
Это не будет работать, если новых записей поступать не будет. Или это будет происходить крайне редко. Так что более правильное решение делать job, который стартует раз в 5 минут и делает все то же самое.
Здравствуйте, Au1, Вы писали:
Au1>Это не будет работать, если новых записей поступать не будет. Или это будет происходить крайне редко. Так что более правильное решение делать job, который стартует раз в 5 минут и делает все то же самое.
Если повнимательней почитать условие задачи, то можно понять, что для запуска процедуры нужно иметь две записи с одинаковым Occupied в течении 5 мин. Т.е. если новые записи поступать не будут, не будут возникать и условия запуска процедуры. Идея в том, чтобы привязываться не к первой записи, а ко второй, появление которой выполнит условие запуска процедуры.
С job-ом, который стартует раз в 5 минут, не все так просто. Во-первых, мы получим задержку между моментом выполнения условия и моментом запуска процедуры (до 5 мин. в худшем случае). В-вторых, запуск job в заданное время с абсолютной точностью не гарантируется. Т.е. реально может пройти 5мин. 1 сек. или 6 мин., если сервер был занят более важными делами. Значит нужно отслеживать, какие записи были обработаны в предыдущий запуск job, а какие еще нет. Т.е. потребуется еще одно поле для флага обработки и поле для хранения времени создания записи.