【问题标题】:Inserting into multiple tables with multiple rows into a table in sqlite在sqlite中将多行插入到多个表中
【发布时间】:2014-09-10 21:30:27
【问题描述】:

我想一次插入两个表。

这需要以这种方式完成。

将单行插入到一个表中,获取自动递增的主键并将多行插入到另一个表中,使用我从第一个表中获得的主键值作为参考。

最好的方法是什么?

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    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"])
    

    【讨论】:

    • 谢谢。是不是和getWritableDatabase().insert的返回值作为参考一样?
    • 是的(如果您想知道如何在 Android 上执行此操作,您应该在问题中提到这一点)。
    【解决方案2】:

    这取决于您如何递增密钥。如果您将当前的“下一个键值”存储在另一个表中,则首先提取下一个键,并将其用于所有插入语句。最后增加另一个表中的“下一个键值”。

    【讨论】:

    • 我正在使用自动增量键
    • 好的,我发帖后才意识到,我很抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2021-07-18
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多