我應該翻轉航班號爲雙航班從一組城市來回的,因此,例如:如何交換Oracle SQL中的記錄值?
1439 ATL SFO
1440 SFO ATL
竟又爲:
1440 ATL SFO
1439 SFO ATL
我嘗試這個查詢(因爲你不能更新..加入甲骨文):
UPDATE
(SELECT f.airline, f.flightno flightno_f, d.airline, d.flightno flightno_d
FROM flights f
INNER JOIN flights d ON f.airline = 9 AND
f.sourceairport = d.destairport AND
f.destairport = d.sourceairport AND d.airline = 9
WHERE d.flightno < f.flightno) g
SET g.flightno_f = g.flightno_d,
g.flightno_d = g.flightno_f;
航空公司,flightno是航班的主要關鍵。選擇給了我一組正確的,我想交換的記錄,但是UPDATE ... SET給了我這個錯誤:
SET g.flightno_f = g.flightno_d,
*
ERROR at line 7:
ORA-01779: cannot modify a column which maps to a non key-preserved table
上我要去哪裏不對任何想法?
@therin嘗試添加約束條件alter table flights add constraint flights_uk unique(flightno); – 2011-04-25 22:40:05
向我創建的視圖添加約束?我不確定你是什麼意思。我嘗試在航班表中添加另一個約束條件,但我一直處理的其他主要問題之一是我無法在航班號上添加唯一約束條件,因此可能會有另一家航空公司的相同航班號。 – therin 2011-04-25 22:42:41
@therin由於您的航班號相同,無法更新 – 2011-04-25 22:46:03