Oracle DB、PL/SQL中的嵌套表用法

Oracle DB、PL/SQL中的嵌套表用法,oracle,plsql,oracle11g,foreign-keys,Oracle,Plsql,Oracle11g,Foreign Keys,我有一个嵌套表nt和一个数据库表fruits。我想把nt的所有元素都放在表fruits中。对于集合是否存在某种批量插入方法,这种方法比循环遍历每个元素更便宜 另外,假设我有一个父表food,其中列fruit\u id。拥有子表fruits是否理想?通过创建类型food\u type将集合直接存储到表food中是否更有效 当前设计: 父表:食物列:id,name,水果id 子表:水果列:id,名称其中 嵌套表nt通过循环插入子表fruits 拟议设计: 餐桌:食物列:id,名称,水果表

我有一个嵌套表
nt
和一个数据库表
fruits
。我想把
nt
的所有元素都放在表
fruits
中。对于集合是否存在某种批量插入方法,这种方法比循环遍历每个元素更便宜

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


  • 当前设计:
父表:食物列:
id
name
水果id

子表:水果列:
id
名称
其中 嵌套表
nt
通过循环插入子表
fruits

  • 拟议设计:
餐桌:食物列:
id
名称
水果表
在哪里

nt
与行一起插入,作为列
fruit\u表的一部分

  • 可以使用以下insert语句执行此操作:

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


  • 我想你可以使用插入前/插入后触发器。i、 e在表nt中插入时,元素将在插入之后或之前插入到表中。如果你能展示你的表的结构,那会更容易。你目前的数据库设计是什么?请提供图形或文本解释?
    INSERT INTO fruits (id, name) 
    select fruit_sequence_name.nextval, COLUMN_VALUE from TABLE(nt);