一次在两个表中插入相关记录?

时间:2011-10-24 18:00:47

标签: sql oracle oracle10g

我正在处理项目的管理模块,并且必须同时将值插入到2个或更多表中,因为它们相互依赖并通过主键连接。因此,例如table1正在构建,通过building_number连接到table2(屋顶)和table3(外部),并且必须添加新建筑物,然后我需要相应地更新屋顶和外部。

在Oracle 10g中是否存在使用单个sql语句将值插入到2个或更多表中?我尝试使用内连接,但这不起作用。在这种情况下,什么是最好的解决方案。

谢谢

4 个答案:

答案 0 :(得分:3)

据我所知,你无法将2个表引用传递给INSERT。但是您可以将FK约束定义为DEFERRABLE,因此在提交事务时将检查它们,而不是在向表中插入数据时检查它们。看一下这个example

答案 1 :(得分:2)

通常情况下,如果您希望引用双向进行,或者具有一对多或多对多关系(不确定是否适用),您可以在建筑物和屋顶以及建筑物和外部之间建立一个中间表在你的情况下)。

在您的情况下,您将创建新建筑物,屋顶和外部物体,而无需相互引用。由于它们没有引用,因此在添加对象时没有FK约束。然后,您将向buildingRoofing表添加一个条目,该表将建筑物与屋顶连接起来,并在buildingExteriors表中添加一个条目,将建筑物与外部连接起来。最后,您提交更改。

答案 2 :(得分:2)

您可以使用INSERT ALL

来使用多表插页

的问候,
罗布。

答案 3 :(得分:0)

我无法想象使用相同的语句将值插入到两个表中会带来任何性能优势,但请尝试使用this链接。