coldfusion/lucee)-一条mysql语句,多个insert-如何获得每个subcategoryid?

bakd9h0s  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(363)

我正在向我的insert函数传递一个id列表。我通过一条带有多个插入的sql语句将parentid和subcategoryid插入到我的数据库中。这很管用。不过,现在的要求已经改变,现在我需要从每个插入一些信息回来。
使用下面的代码,我添加了 SELECT last_insert_id() as subsubCategoryID 查询只返回第一条插入的记录(实际上我只希望得到最后一条而不是第一条,所以这是一个惊喜)。是否可以为每个insert返回每个subcategoryID,或者是否需要在insert语句上循环并将多个insert分解为不同的insert语句?

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);
nle07wnf

nle07wnf1#

您应该 checkout 存储过程。我设想了一个文本块,它带有像管道符号这样的分隔符,这些分隔符被分开并插入begintransaction/commit中。

chhkpiq4

chhkpiq42#

我决定保留原来的查询(没有 SELECT last_insert_id() as subsubCategoryID )最后执行一个查找(select语句),它将返回subcategoryID。这将只是两个数据库连接,而不是多个数据库连接,如果我中断insert语句只是为了附加 SELECT last_insert_id() as subsubCategoryID 在每个insert语句之后。

更新根据以下ageax的评论,我添加此更新是为了清楚起见,以防其他人遇到此问题。。。当我说“在最后执行查找”时,我指的是过程的结束,而不是查询的结束**

相关问题