【发布时间】:2018-11-16 13:23:15
【问题描述】:
我会尽量做到完整但简洁。如果我遗漏了什么,请告诉我。
我有一系列活动,每个活动都包含完成给定活动所需的步骤。每个步骤都有一些与步骤相关的附加组件。如果你把它看成一棵树,它会是这样的:
ACTIVITY
-- STEP
---- COMPONENT
下面是组件表的数据集结果。
我希望编写一个 mySQL 插入/选择语句,它允许我复制 ID = 84。但是在插入时,ID 值应该继承 ACTIVITY 的新 ID(例如,让我们使用 299),而 AID 应该继承 STEP 值的新 ID(例如,让我们使用 501,502,503,504,505,506) .
我知道 mySQL 语句会是什么样子,这不是问题所在。我遇到的问题是如何编写循环,以便我可以传入新的 ID 和新的 AID 值。 SID 是主键(自动递增)。
使用上面给定的数据集,我希望插入 6 条新记录。相反,我得到 9,所以我的循环没有正确循环,或者我传递了错误的数据。
这是循环:
for (local.data.newAID in local.data.list_newAID){
// COPY SET
for (local.data.origAID in local.data.list_existingAID){
local.formDataStruct.origAID = local.data.origAID;
variables.workoutDAO.makeCopyCoreSet(
origID = local.dataStruct.ID,
newID = local.dataStruct.newID,
origAID = local.dataStruct.origAID,
newAID = local.dataStruct.newAID
);
}
}
这里是makeCopyCoreSet函数:
INSERT INTO SET(ID, LID, AID)
SELECT
:newID, LID, :newAID
FROM
Set
WHERE ID = :origID AND AID = :origAID;
我错过了什么?
【问题讨论】:
-
什么是
LID?什么版本的 MySQL? -
LID 是 locationID 中的位置,但该功能尚未实现。
-
看起来你正在为每个循环做一个 INSERT。这可以打败你的数据库。
-
同意。我不会反对我也在研究的单个插入语句。我想如果我可以让它工作,我可以在我获得一些更好的理解后修改它以循环查询插入语句。我对选择/插入循环没有太多经验。
-
是的,我讨厌这样做。我喜欢 dbfiddle.uk,但这一直困扰着我。 :-S
标签: coldfusion mariadb lucee