【问题标题】:Nested table usage in Oracle DB, PL/SQLOracle DB、PL/SQL 中的嵌套表使用
【发布时间】:2013-10-25 11:02:01
【问题描述】:

我有一个嵌套表nt 和一个数据库表fruits。我想在表fruits 中包含nt 的所有元素。是否有某种用于集合的批量插入方法可能比遍历每个元素更便宜?

另外,假设我有一个父表food,列fruit_id。拥有子表fruits 是否理想?通过创建类型food_type 将集合直接存储到表food 中是否更有效?


  • 当前设计:

父表:食物; 列: idnamefruit_id

子表:水果; 列: id,name 其中 嵌套表nt通过循环插入到子表fruits

  • 提议的设计:

餐桌:食物; 列: idnamefruit_table 在哪里

CREATE type food_type IS TABLE OF varchar(50);
nt food_type;

并且nt 与行一起插入,作为列fruit_table 的一部分

【问题讨论】:

  • 我认为您可以使用插入之前/之后的触发器。即当您在表格中插入时,元素将在插入之后或之前插入到表格水果中。如果你能展示你的表格的结构,那就更容易了。
  • 您当前的数据库设计是什么?请提供图形或文字解释?

标签: oracle plsql oracle11g foreign-keys


【解决方案1】:
  1. 您可以使用以下插入语句来做到这一点:

    INSERT INTO fruits (id, name) 
    select fruit_sequence_name.nextval, COLUMN_VALUE from TABLE(nt);
    
  2. 这取决于您要运行的查询。如果您需要进行大量分析查询,将它们分开是有意义的,否则将嵌套表存储在食物中是没有问题的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 2020-03-10
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多