暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle PLSQL与JDBC中的批量删除

askTom 2015-12-14
133

问题描述

嗨,汤姆,

我使用的是Oracle EE 11.2.0.4.0版。

除此之外,我还部署了我的Java应用程序。所有按逻辑分组的表均通过ON DELETE CASCade子句连接。举例如下:

删除表哑铃清除;

删除表哑巴清除;

--父表
CREATE TABLE哑元_par
(
ID编号,
文本VARCHAR2(1000) ,
cdate日期默认系统日期,
约束哑参数_par_pk主键(id)
);

--子表
CREATE TABLE哑机_ch
(
ID编号NOT NULL ,
文本VARCHAR2(1000) ,
父ID编号,
s_父代编号,
约束哑铃_ch_pk主键(id) ,
约束哑铃_ch_spi_fk外键(s_)引用哑铃_ch (id) ON DELETE CASCDE使能,
约束哑巴_ch_id_fk外键(父代ID )引用哑巴(id) ON DELETE CASCDE启用
);

创建索引idx_dummy_par_cd在哑巴(cdate)上;

在我的应用程序中,需要保留过去120天的数据,旧数据应该被清除。

为了达到这个目的,我可以想到两个选择:

1.在我的Java应用程序中,我将使用JDBC.bulkDelete方法,在第121天,我将触发删除操作。

示例代码,如:

字符串删除TableSQL = "从哑巴中删除WGERE cdate <= SYSD - 120";
dbConnection = getDBConnection() ;
准备语句= dbConnection.prepareStatement(deleteTableSQL) ;

dbConnection.setAutoCommit(false);

preparedStatement.addBatch();

preparedStatement.executeBatch();

dbConnection.commit();

我将创建一个PLSQL过程,它将使用FORALL删除这些数据。在第121天,我的Java应用程序将调用PLSQL过程。它不会进行任何数据操作。

哪种方法是最好的。我的表中的数据可能是巨大的,范围可达1-5米。

专家解答

为什么不两全其美呢?

有一个PLSQL过程,它可以:

删除自哑巴位置WGRE cdate <= SYS日期- 120


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论