Я хочу создать триггер в Oracle 11g. Проблема в том, что я хочу триггер, который запускается каждый раз, когда есть инструкция SELECT. Возможно ли это или есть другой способ добиться того же результата. Это блок PL/SQL:Создать триггер в Oracle 11g
CREATE TRIGGER time_check
BEFORE INSERT OR UPDATE OF users, passwd, last_login ON table
FOR EACH ROW
BEGIN
delete from table where last_login < sysdate - 30/1440;
END;
Я пытаюсь реализовать таблицу, в которой я могу хранить пользовательские данные. Я хочу «смыть» строки, которые устарели, чем один час. Существуют ли другие альтернативы тому, как я могу это реализовать?
p.s Можете ли вы сказать мне, что этот блок PL/SQL является правильным. Есть ли ошибки?
BEGIN
sys.dbms_scheduler.create_job(
job_name => '"ADMIN"."USERSESSIONFLUSH"',
job_type => 'PLSQL_BLOCK',
job_action => 'begin
-- Insert PL/SQL code here
delete from UserSessions where last_login < sysdate - 30/1440;
end;',
repeat_interval => 'FREQ=MINUTELY;INTERVAL=2',
start_date => systimestamp at time zone 'Asia/Nicosia',
job_class => '"DEFAULT_JOB_CLASS"',
comments => 'Flushes expired user sessions',
auto_drop => FALSE,
enabled => FALSE);
sys.dbms_scheduler.set_attribute(name => '"ADMIN"."USERSESSIONFLUSH"', attribute => 'job_priority', value => 5);
sys.dbms_scheduler.set_attribute(name => '"ADMIN"."USERSESSIONFLUSH"', attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_FAILED_RUNS);
sys.dbms_scheduler.enable('"ADMIN"."USERSESSIONFLUSH"');
END;
Я пытаюсь реализовать таблицу, в которой можно хранить пользовательские данные. Я хочу «смыть» строки, которые устарели, чем один час. Можете ли вы предложить другие альтернативы, как я могу это реализовать? –
Я отредактировал ваш вопрос, чтобы добавить то, что вы разместили в своем комментарии, так как это актуально. (Вы можете сделать это самостоятельно в следующий раз - убедитесь, что ваш вопрос содержит всю необходимую информацию.) – Mat
Возможно, вам понадобится фиксация, нет? – Ben