【发布时间】:2011-12-17 15:33:59
【问题描述】:
我想在 Oracle 11g 中创建一个触发器。问题是我想要一个每次有 SELECT 语句时运行的触发器。这是可能的还是有其他方法可以达到相同的结果。这是 PL/SQL 块:
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;
【问题讨论】:
-
我正在尝试实现一个可以存储用户数据的表。我想“刷新”超过一小时的行。你能提出其他替代方案吗?
-
我编辑了您的问题以添加您在评论中发布的内容,因为它是相关的。 (下次您可以自己做 - 确保您的问题包含所有相关信息。)