求一个Oracle触发器 只保存近2天的表中数据,(将之前的数据自动触发删除)。例如对表historyData执行。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个Oracle触发器 只保存近2天的表中数据,(将之前的数据自动触发删除)。例如对表historyData执行。相关的知识,希望对你有一定的参考价值。

您好,在表A上建触发器代码里是不可以对表A进行select delete update insert等操作的。建议建procedure 然后使用job来实现你的需求。或者是在表B上建触发器,当触发时检查表A数据并进行删除。
存储过程写法:
create or replace procedure del_data
as
begin
delete from historyData where date_col < sysdate-2;
commit;
end;
参考技术A delete from historyData where dTime< date_add(sysdate, interval -2 day);追问

触发器。。。。 不是sql

ORACLE中用PLSQL如何把一个表中数据通过.DMP文件导出,再导入到另一个数据库的一个相同表结构的表中?

我想用PLSQL中把oracle数据库中的一个数据表中的表数据通过dmp导出来,然后在另一个数据库里把这个dmp里面的数据导入一个相同表结构的数据表里。具体要怎么操作,我试了各种都不行啊,求大神指点具体操作过程。。是在pl/sql里面操作。
在线等,急急急急

可以在 tools->export users objects 下选择行的导出。你想要的东西 参考技术A 具体报什么错误呢?表空间错误还是用户名错误?追问

不是报错,是我想要这个功能,我有两个数据库。我想把第一个数据库里的一个数据表通过dmp导出来。然后将这个dmp导入到另一个数据库的一个相同表结构不同表名的表里。我就是想知道怎么导进去?当然如果第二个表里有数据,那导进来的dmp就是追加数据而不是覆盖数据。

追答

源库a,目标库b
建一个dblink,在b库执行insert into tab select * from tab@dblinkname;
创建dblink脚本:
create public database link dblinkname
connect to username
identified by passwd
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sid)
)
)';

追问

不行啊,两个数据库分别在内网和外网,不能直接通信的,所以我只能手动导出dmp数据,然后手动导到另一个数据库的表里!

追答

你看看expdp和impdp吧,网上一搜一大堆

以上是关于求一个Oracle触发器 只保存近2天的表中数据,(将之前的数据自动触发删除)。例如对表historyData执行。的主要内容,如果未能解决你的问题,请参考以下文章

oracle求查询连续三天的数据

如何根据laravel控制器中另一个表中保存的数据创建触发器以填充数据库中的表

oracle只显示不为空的列

mysql视图的作用是啥

什么是oracle的临时表??

Etl工具将sqlserver数据同步到oracle设计说明