部屋間のリンクを含むグリッド上に部屋のマップ (グラフ) を作成するコードがあります。あるテーブルに部屋があり、別のテーブルにリンクがある Firebird データベースに保存されます。データは、DB Express TSimpleDataset データセットを通じて管理されます。
出口 (リンク) テーブルのクエリは次のようになります。
select
EXITS.*,
r1.x as x,
r1.y as y,
r2.x as x2,
r2.y as y2
from EXITS
inner join ROOMS r1 on r1.ROOM_ID = EXITS.ROOM1
inner join ROOMS r2 on r2.ROOM_ID = EXITS.ROOM2
問題は、新しい出口を追加して ApplyUpdates を呼び出すと、DBX の SQL パーサーが、ROOMS テーブルのフィールドが元のテーブルの一部ではなく便宜上存在することを理解していないように見えることです。以下を生成します。
insert into "EXITS"
("EXIT_ID", "AORDER", "AEXIT", "PREACTION", "POSTACTION", "COLOR", "ROOM1",
"ROOM2", "MAP1", "MAP2", "X", "Y", "X2", "Y2")
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
加えて、予測可能な結果を伴う適切なパラメータ。XとYが挿入または更新されるべきではないことを理解させる方法を知っている人はいますか?