2016-10-22 54 views
0

我有这些表,我需要从“aeronave”表中比较日期从“detalle_mantenimiento”做更新。从选择Oracle更新

http://prntscr.com/cxds08

这就是我试图做的。

update ( select matricula, matricula_aeronave, fecha_termino, estado_id_estado from aeronave inner join aeronave_mantenimiento on aeronave_mantenimiento.aeronave_matricula = aeronave.matricula inner join mantenimiento on mantenimiento.id_mantenimiento = aeronave_mantenimiento.mantenimiento_id_mantenimiento inner join detalle_mantenimiento on detalle_mantenimiento.mantenimiento_id_mantenimiento = mantenimiento.id_mantenimiento WHERE detalle_mantenimiento.fecha_termino >= SYSDATE) set estado_id_estado = 1;

但我有错误是如下:

“不能修改它映射到非键保存表列” *原因:试图插入或更新连接视图的列,其中 映射到非键保存的表。

选择它的工作,但我找不到是什么导致错误。

回答

1

如果您符合这些条件,可以更新Oracle中的连接 - 1.只更新一个基表 2.所有其他表保存为键:每个表必须至少有一行基表。

就你而言,这意味着,表aeronave_mantenimiento,mantenimiento或detalle_mantenimiento的键不是连接的关键。这个链接有一个简单的例子来说明“Key-Preserved Table”是什么http://docs.oracle.com/cd/B28359_01/server.111/b28310/views001.htm#i1006318

您可能想重写您的查询,请尝试使用子查询而不是联接。它可能有帮助。