PL/SQL 插入和分区

Posted

技术标签:

【中文标题】PL/SQL 插入和分区【英文标题】:PL/SQL INSERT INTO & Partitions 【发布时间】:2018-02-04 21:57:28 【问题描述】:

首先我想说我还在学习 PL/SQL。我想知道您是否可以就以下主题/问题分享您的意见。基本上,我想通过一个包将表 X 中的数据插入到表 Y 中。我已经阅读了有关插入部分的内容,所以这很清楚,但是我想知道现有分区会发生什么。假设表 Y 有分区。当我们从表 X 中插入新数据时会发生什么?是否会被划分为分区?或者如果我有间隔分区,它们会根据来自表 X 的传入数据增长吗?我需要“触发”/调用包内的分区吗?

提前感谢您的帮助!我只是在寻找提示和建议,以便我可以弄清楚如何设置我的表和包(以防我需要在那里调用分区)。例如,我是否应该有间隔分区。

感谢您的宝贵时间!

【问题讨论】:

【参考方案1】:

如果您插入的数据符合现有分区的定义,则新数据将添加到现有分区中。如果新数据不符合任何现有分区的定义,则要么

将为新数据创建一个新分区,如果表设置为这样做,或者

插入将失败,您必须手动创建一个能够保存新数据的新分区。

上述哪种情况会发生在您的情况下,完全取决于您的表是如何创建的、已经存在哪些分区、分区方法和键是什么以及您尝试插入的数据。

您不必在代码中“做”任何事情来告诉它使用哪个分区。分区表的行为与非分区表没有什么不同。

祝你好运。

【讨论】:

谢谢@Bob!最后一个问题。我是否需要以某种方式指定分区或数据将自动添加到分区中? 您不需要指定分区 - 系统会为您确定。使用分区表与使用“普通”表没有任何不同。祝你好运。

以上是关于PL/SQL 插入和分区的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 动态插入

PL/SQL 在插入语句的子查询中使用别名和函数

PL/SQL 触发器以防止插入

PL/SQL - 仅当记录不存在时才插入记录

更新同一表中的值的 PL/SQL 插入和删除触发器

PL/SQL:如何根据列值插入