2016-10-22 80 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

您可能想重寫您的查詢,請嘗試使用子查詢而不是聯接。它可能有幫助。