2016-07-04 1 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"); 

Я хотел бы получить столбец идентификатора после вставки потока. Как я могу это сделать? В идеале я мог бы вставить и получить столбец в том же самом выражении.

+0

С какого языка вы обращаетесь к БД? –

+0

Я использую [sqlx] (https://github.com/jmoiron/sqlx) в Go с [драйвером mattn's] (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" 
Смежные вопросы