不能,前提是你要确认的是“刚才那条插入”的ID。SQLite的sqlite3_last_insert_rowid(D)和SQL同名函数,是按数据库连接D记录最近一次成功的rowid表或virtual table INSERT所生成的rowid;WITHOUT ROWID表不记录,若该连接没有这样的成功INSERT,返回值可以是0。它不按表、不按业务记录、也不跨连接共享。换了一个连接再读,得到的只是那个连接自己的最近记录,不能作为前一个连接刚才插入的回执。适用范围要卡在rowid table及virtual table INSERT,并且是C接口或SQL同名函数所述语义;不要把它扩大成“全局最后一条插入ID”或“事务已提交证明”。

观察信息时,先看实际执行插入的是哪个连接,再看读取last_insert_rowid的是不是同一个连接。如果中间经过连接池、ORM会话切换、重试或异步任务,物理连接可能已经变化,这时不能靠该值与刚才操作建立可靠对应关系。还要注意,即使同一连接,并发插入也可能改变读数;trigger运行中与退出后的可见边界也要分清,不能把trigger内部或之后某个时点的值直接当成业务插入结果。回滚也不必抹掉这个返回值,所以“读到了非零ID”不等于“事务已经提交”。风险在于把另一个连接的ID贴到本条记录上,造成关联错位,后续更新、日志或对账都可能指向错误对象;用max(id)猜本次ID同样不可靠,它可能混入并发插入、其他来源写入或删除后的空洞,不能替代操作回执。
下一步应回到原连接和原操作链路核对:插入是否成功、影响的是哪条语句、返回值在何时读取、连接是否被替换。若需要跨连接或跨事务传递ID,应由执行插入的一侧把操作结果作为回执传出,而不是让另一个连接再查一次last_insert_rowid。开发和测试阶段可在隔离环境复现连接切换、同连接并发和trigger边界,明确成功、失败、异常三个分支;生产侧不要为了验证而重发插入,不要改主键凑结果,也不要吞掉异常。
清江浦区台式电脑用户可拨400-877-9605,准备原插入连接和操作回执、读取ID时点,换连接同值也不能证明对应或已提交。电脑快修网提供信息展示与第三方维修对接,具体地址、电脑侧检查是否支持及安排当次核实,启用范围不代表即时履约。