【发布时间】:2014-09-10 21:30:27
【问题描述】:
我想一次插入两个表。
这需要以这种方式完成。
将单行插入到一个表中,获取自动递增的主键并将多行插入到另一个表中,使用我从第一个表中获得的主键值作为参考。
最好的方法是什么?
【问题讨论】:
标签: sqlite
我想一次插入两个表。
这需要以这种方式完成。
将单行插入到一个表中,获取自动递增的主键并将多行插入到另一个表中,使用我从第一个表中获得的主键值作为参考。
最好的方法是什么?
【问题讨论】:
标签: sqlite
SQLite 有内置的last_insert_rowid() 函数,但它的返回值会在下一次插入后发生变化。
您必须读取程序中的值,然后手动插入:
db.execute("INSERT INTO People(Name) VALUES (?)", ["Joe"])
id = db.last_insert_rowid
db.execute("INSERT INTO Pets(Owner, Name) VALUES (?,?)", [id, "Fluffy"])
db.execute("INSERT INTO Pets(Owner, Name) VALUES (?,?)", [id, "Spot"])
【讨论】:
这取决于您如何递增密钥。如果您将当前的“下一个键值”存储在另一个表中,则首先提取下一个键,并将其用于所有插入语句。最后增加另一个表中的“下一个键值”。
【讨论】: