2016-07-04 83 views
0

我在sqlite3的一個表下面的模式:檢索自動增量列插入後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列。我怎樣才能做到這一點?理想情況下,我可以在同一個語句中插入和檢索列。

+0

從哪種語言訪問數據庫? –

+0

我正在使用[sqlx](https://github.com/jmoiron/sqlx)與[mattn's driver](https://github.com/mattn/go-sqlite3) – hiy

回答

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) 
    } 
} 
+0

謝謝,這正是我需要!! – hiy

0

我不知道,如果你能做到這一點的一個語句,但是在插入語句後立即可以使用下面的語句來獲得最後的自動遞增ID:

SELECT last_insert_rowid() 

另一種方法是使用聲明如下:

select seq from sqlite_sequence where name="threads"