(MySQL - Coldfusion/Lucee) - 一个 MySQL 语句,多个插入 - 如何获取每个 subsubCategoryID?
(MySQL - Coldfusion/Lucee) - One MySQL Statement, Multiple Inserts - How to get EACH subsubCategoryID?
我正在将 ID 列表传递给我的插入函数。我通过一个包含多个插入的 sql 语句将 parentID 和 subcategoryID 插入到我的数据库中。这很好用。但是现在要求已经改变,现在我需要从每个插入中取回一些信息。
使用下面的代码,我添加了 SELECT last_insert_id() as subsubCategoryID
并且查询只返回了第一个插入的记录(我实际上期望只插入最后一个而不是第一个,所以这很令人惊讶)。是否有可能为每个插入取回每个子子类别 ID,或者是否需要循环插入语句并将多个插入分成不同的插入语句?
for (item in listToArray(local.formData, ",")) {
local.values &= "(44, " & item & "," & local.formData.userID &")," ;
}
local.values = left(local.values,len(local.values)-1) ;
local.sql = "
INSERT INTO table (parentID, subcategoryID, userID)
VALUES " & local.values & "
; SELECT last_insert_id() as subsubCategoryID;
"
writeDump(local.sql);
我决定按原样保留原始查询(没有 SELECT last_insert_id() as subsubCategoryID
),然后在最后执行查找(select 语句),这将 return子类别 ID。这将只有两个数据库连接,而不是如果我分解插入语句所需的多个数据库连接,这样我就可以在每个插入语句后附加 SELECT last_insert_id() as subsubCategoryID
。
** 更新 ** 根据 Ageax 在下面发表的评论,我添加此更新是为了清楚起见,以防其他人遇到这个 SO 问题...当我说 "at the end perform a look up" 我的意思是进程结束而不是查询结束 **
您应该检查存储过程。
我设想了一段带有分隔符(如管道符号)的文本,它们被分开并插入到开头 transaction/commit.
我正在将 ID 列表传递给我的插入函数。我通过一个包含多个插入的 sql 语句将 parentID 和 subcategoryID 插入到我的数据库中。这很好用。但是现在要求已经改变,现在我需要从每个插入中取回一些信息。
使用下面的代码,我添加了 SELECT last_insert_id() as subsubCategoryID
并且查询只返回了第一个插入的记录(我实际上期望只插入最后一个而不是第一个,所以这很令人惊讶)。是否有可能为每个插入取回每个子子类别 ID,或者是否需要循环插入语句并将多个插入分成不同的插入语句?
for (item in listToArray(local.formData, ",")) {
local.values &= "(44, " & item & "," & local.formData.userID &")," ;
}
local.values = left(local.values,len(local.values)-1) ;
local.sql = "
INSERT INTO table (parentID, subcategoryID, userID)
VALUES " & local.values & "
; SELECT last_insert_id() as subsubCategoryID;
"
writeDump(local.sql);
我决定按原样保留原始查询(没有 SELECT last_insert_id() as subsubCategoryID
),然后在最后执行查找(select 语句),这将 return子类别 ID。这将只有两个数据库连接,而不是如果我分解插入语句所需的多个数据库连接,这样我就可以在每个插入语句后附加 SELECT last_insert_id() as subsubCategoryID
。
** 更新 ** 根据 Ageax 在下面发表的评论,我添加此更新是为了清楚起见,以防其他人遇到这个 SO 问题...当我说 "at the end perform a look up" 我的意思是进程结束而不是查询结束 **
您应该检查存储过程。 我设想了一段带有分隔符(如管道符号)的文本,它们被分开并插入到开头 transaction/commit.