Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否同时在两个表中插入相关记录?_Sql_Oracle_Oracle10g - Fatal编程技术网

Sql 是否同时在两个表中插入相关记录?

Sql 是否同时在两个表中插入相关记录?,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,我正在处理我的项目的管理模块,必须同时将值插入到两个或多个表中,因为它们相互依赖,并且通过主键连接。例如,表1是通过建筑物编号连接到表2(屋顶)和表3(外部)的建筑物,必须添加一个新的建筑物,然后我需要相应地更新屋顶和外部 在Oracle 10g中,是否仍然可以使用单个sql语句将值插入2个或多个表中?我试过使用内部联接,但不起作用。在这种情况下,什么是最好的解决方案 谢谢我无法想象使用同一语句在两个表中插入值会带来什么性能好处,但请尝试链接。据我所知,您无法将两个表引用传递给插入。但您可以将F

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

在Oracle 10g中,是否仍然可以使用单个sql语句将值插入2个或多个表中?我试过使用内部联接,但不起作用。在这种情况下,什么是最好的解决方案


谢谢

我无法想象使用同一语句在两个表中插入值会带来什么性能好处,但请尝试链接。

据我所知,您无法将两个表引用传递给
插入
。但您可以将FK约束定义为
可延迟
,以便在提交事务时检查它们,而不是在向表中插入数据时检查它们。看看这个

通常,如果希望引用双向,或者具有一对多或多对多关系(不确定这是否适用于您的情况),则在建筑和屋顶以及建筑和外部之间会有一个中间表


在本例中,您将创建新的建筑、屋顶和外部对象,而不相互引用。由于它们没有引用,因此添加对象时不存在FK约束。然后,您将在BuildingRoof表中添加一个将建筑与屋顶绑定的条目,并在buildingExteriors表中添加一个将建筑与外部绑定的条目。最后,提交更改。

您可以使用多表插入,使用

问候,

Rob.

和所有美国MS SQL Server用户都为这一“标准但不受支持的功能”而哭泣:(+1用于提及可延迟的约束,这是插入具有[co]递归引用约束的表的关键。(此外,应确保使用一个事务,但可能不用说…;-)是的,我同意,如果MS有一天实现它,那就太好了。这个“问题”是当两个新插入的记录是[co]递归引用完整性约束的一部分时。没有延迟(或禁用或丢失)约束第一次插入将失败,因为它依赖于第二次插入。在阅读您的问题时,我觉得
屋顶
外部
都引用了
建筑
(通过
建筑编号
),但不是相反(ie-
建筑物
没有
外部编号
)。是这样的情况(在哪一点上正常交易应该足够),还是您确实有交叉FK(在哪一点上我最有可能尝试重构模型)?