gpt4 book ai didi

oracle - 我们如何在PL SQL中在特定时间后自动删除表行

转载 作者:行者123 更新时间:2023-12-02 08:23:24 25 4
gpt4 key购买 nike

我有下面给出的相同列的拖车表:

表 1 工资单:

enter image description here

表 2 TEMP_PAYROLLFILE:

enter image description here

我已经编写了一个 PL SQL 函数,它将表 PAYROLLFILE 中的重复行插入到 TEMP_PAYROLLFILE 并从表 PAYROLLFILE 中删除原始行。所以简而言之,表 TEMP_PAYROLLFILE 正在为表 PAYROLLFILE 中删除的数据保留备份。

这是 PL SQL 函数代码:

FUNCTION Remove_transaction_by_id(employee_id NUMBER)
RETURN CLOB
AS
cnt INT;
BEGIN
INSERT INTO temp_payrollfile
SELECT *
FROM payrollfile
WHERE empid = employee_id;

DELETE FROM payrollfile
WHERE empid = employee_id;

SELECT Count(*)
INTO cnt
FROM payrollfile;

COMMIT;

RETURN '<result><status>success</status> <row>'
||cnt
|| '</row></result>';
EXCEPTION
WHEN OTHERS THEN
RETURN '<result><status>Error</status></result>';
END remove_transaction_by_id;

然而,我想做的不止这些, 我想自动删除备份行 来自表 TEMP_PAYROLLFILE 在特定时间段结束后 要塞 特定行 .我需要触发器吗。我是新手,以前从未做过此类工作。如果有人知道这种技术,那么我将非常感谢您的帮助。如果需要更多详细信息,请告诉我。谢谢

更新:

我写了这个工作来清理旧行:它会起作用吗?
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'oe.REMOVE_TEMP_PAYROLLFILE_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN DBMS_STATS.GATHER_TABLE_STATS('oe',
'TEMP_PAYROLLFILE');
delete from TEMP_PAYROLLFILE where RECORDDATE < sysdate-1;
END;',
start_date => '20-JAN-16 1.00.00AM US/Pacific',
repeat_interval => 'FREQ=DAILY',
end_date => '25-JAN-16 1.00.00AM US/Pacific',
enabled => TRUE,
comments => 'Gather table statistics');
END;

最佳答案

您在这里需要的是定期清理工作。 使用 DBMS_SCHEDULER您可以配置重复执行此操作的作业:

delete from TEMP_PAYROLLFILE where recorddate < sysdate-60;

删除超过 60 天的记录。

These是有关如何创建预定作业的一些示例。如下所示,job_action 部分接受 Pl/SQL 脚本,您可以在其中放置清理逻辑。
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'oe.my_job1',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN DBMS_STATS.GATHER_TABLE_STATS(''oe'',
''sales''); END;',
start_date => '15-JUL-08 1.00.00AM US/Pacific',
repeat_interval => 'FREQ=DAILY',
end_date => '15-SEP-08 1.00.00AM US/Pacific',
enabled => TRUE,
comments => 'Gather table statistics');
END;
/

关于oracle - 我们如何在PL SQL中在特定时间后自动删除表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com