我正在向我的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);
2条答案
按热度按时间nle07wnf1#
您应该 checkout 存储过程。我设想了一个文本块,它带有像管道符号这样的分隔符,这些分隔符被分开并插入begintransaction/commit中。
chhkpiq42#
我决定保留原来的查询(没有
SELECT last_insert_id() as subsubCategoryID
)最后执行一个查找(select语句),它将返回subcategoryID。这将只是两个数据库连接,而不是多个数据库连接,如果我中断insert语句只是为了附加SELECT last_insert_id() as subsubCategoryID
在每个insert语句之后。更新根据以下ageax的评论,我添加此更新是为了清楚起见,以防其他人遇到此问题。。。当我说“在最后执行查找”时,我指的是过程的结束,而不是查询的结束**