как выполнить процедуру с таймером в Oracle - PullRequest
2 голосов
/ 16 ноября 2010

Мне нужно очистить все записи в таблице, если данные существуют в течение одного часа. Чтобы узнать время начала, у меня есть столбец «StartTime» с типом данных «дата». Я думаю, мне нужен таймер для этого,

как я могу сделать это в оракуле?

Ответы [ 4 ]

6 голосов
/ 16 ноября 2010

В зависимости от ваших точных требований, я бы, вероятно, посмотрел на использование представления, чтобы только отображать действительные строки при запросе. Это создало бы впечатление, что были доступны только последние один час записей. Это также означает, что вам не нужно удалять строки ровно через час после их создания.

Затем, чтобы удалить строки, я бы посмотрел на использование DBMS_JOB или DBMS_SCHEDULER для удаления строк, как было предложено в некоторых других ответах.

Помните, что только из-за того, что ваше требование состоит в том, чтобы очищать строки из таблицы через час, вам, вероятно, нужно всего лишь удалить возможность запроса по ним, что вы можете сделать с представлением.

4 голосов
/ 16 ноября 2010

Для какой версии Oracle?

Для версий v7.3.4 - 9i используйте DBMS_JOB , чтобы запланировать задачу.10g +, вы хотите использовать DBMS_SCHEDULER .Мне не понятно, как часто вы хотите / должны это запускать ...

3 голосов
/ 16 ноября 2010

Вы можете создавать запланированные задания в Oracle 10G и более поздних версиях, используя DBMS_SCHEDULER

Если вы действительно привередливы, вы можете запланировать выполнение этого задания - которое вызывает вашу процедуру - на каждую 1 минуту, чтобы данные очищалиськак только истекает 60-я минута.

См. эту ссылку для примера того, как настроить / запланировать задание с помощью сценариев в Oracle 10G

1 голос
/ 16 ноября 2010

Требования не совсем ясны.

Это задание / программа, которую вы должны запустить один раз и удалить записи, которые существовали более часа? Если это так, вы можете использовать ..

delete from <table_name>
where StartTime < (sysdate-1/24);
commit;

Если вам нужно постоянно очищать записи, вам нужно запланировать это как работу. Частота будет зависеть от того, как часто вы хотите, чтобы записи были удалены.

Какое экономическое обоснование вы пытаетесь решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...