我有一些代码可以在网格上构建房间地图(图表),并在它们之间建立链接。它存储在 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
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
加上适当的参数,具有可预测的结果。有谁知道我怎样才能理解不应该插入或更新 Xs 和 Ys?