【发布时间】:2012-07-27 22:17:21
【问题描述】:
如何批量插入多条记录并快速获取每条记录的最后插入ID(经典asp/ado)?
我已经尝试过了,但它只能以每秒 3 行左右的速度运行,这真是个笑话。
rs.Open "myTable", cn,adOpenKeyset, adLockOptimistic
do while NOT rs.EOF
rs.AddNew
rs("text") = myFunction() ' returns some text.
rs.update
lastid = rs("id") ' get new id and so something
loop
使用普通的 adOpenForwardOnly(不返回最后插入的 ID),它的运行速度提高了大约 1000 倍。
任何人都可以建议解决上述问题或替代解决方案吗?我必须在代码中执行此操作,而不是直接将 sql insert into ... select() 等,因为我需要对文本运行处理函数。
【问题讨论】:
-
你使用的是什么数据库引擎?
-
我认为您的问题中的信息不足以正确回答。我们通常谈论多少行?为什么有必要当时而不是稍后检索 ID?代码在我看来是“伪”的,你能把它充实起来,让它更真实,目前它是一个无限循环吗?输入的驱动数据如何与创建的行相关,输入数据来自哪里?
myFunction有什么独特之处,以至于无法在 T-SQL 中复制相同的功能?
标签: asp-classic ado adodb recordset