在SQLite3中插入后检索自动增量列

时间:2016-07-04 20:46:42

标签: sql sqlite sql-insert auto-increment

我在SQLite3中有一个表,其中包含以下模式:

create table threads(
  id            integer primary key autoincrement,
  submitter     text,
  body          text,
  title         text,
  subtime       int -- Unix time
);

我正在插入这样的行:

insert into threads (title, body, subtime, submitter) values
("I like ducks", "Don't you?", 1467664977640, "tom");

我想在插入线程后获取id列。我怎样才能做到这一点?理想情况下,我可以在同一语句中插入和检索列。

2 个答案:

答案 0 :(得分:1)

Result interface允许您访问此值而无需执行其他查询:

res, err := db.Exec("INSERT ..."), someParam)
if err != nil {
    println("Exec err:", err.Error())
} else {
    id, err := res.LastInsertId()
    if err != nil {
        println("Error:", err.Error())
    } else {
        println("LastInsertId:", id)
    }
}

答案 1 :(得分:0)

我不知道你是否可以在一个语句中执行此操作,但在insert语句之后,您可以使用以下语句获取最后一个自动增加的id:

SELECT last_insert_rowid()

另一种方法是使用以下语句:

select seq from sqlite_sequence where name="threads"