Как получить последний идентификатор вставки в SQLite? - PullRequest
18 голосов
/ 17 января 2012

Существует ли какая-либо встроенная функция, доступная в SQLite, для извлечения идентификатора последней вставленной строки.Например: - В MySQL у нас есть LAST_INSERT_ID() функция такого рода.Для sqllite любая функция доступна для выполнения того же процесса.

Пожалуйста, помогите мне.

Спасибо

Ответы [ 5 ]

21 голосов
/ 17 января 2012

SQLite

Это доступно с помощью функции SQLite last_insert_rowid() :

Функция last_insert_rowid () возвращает ROWID последней строки вставить из базы данных соединение, которое вызвало функцию. SQL-функция last_insert_rowid () - это оболочка sqlite3_last_insert_rowid () Функция интерфейса C / C ++.

PHP

Версия PHP / привязка этой функции sqlite_last_insert_rowid():

Возвращает идентификатор строки, которая была недавно вставлена ​​в база данных dbhandle, если она была создана как поле с автоинкрементом.

15 голосов
/ 27 апреля 2013

При использовании SQLite версии 3 с PDO SQLite, это может быть так:

$insert = "INSERT INTO `module` (`mid`,`description`) VALUES (
            NULL,
            :text
            );
        ";
$stmt = $conn->prepare($insert);
$stmt->execute(array(':text'=> $text));

echo $conn->lastInsertId()
4 голосов
/ 17 января 2012

Имеется last_insert_rowid()

Функция last_insert_rowid () возвращает ROWID последней строки вставить из базы данных соединение, которое вызвало функцию

2 голосов
/ 17 января 2012
0 голосов
/ 22 мая 2018

Это короткий метод C #, который работает для меня.Int32 достаточно велик для моих целей.

public static Int32 GetNextID( SqliteConnection AConnection )
{
  Int32 result = -1;

  using ( SqliteCommand cmd = AConnection.CreateCommand() )
  {
    cmd.CommandText = "SELECT last_insert_rowid();";
    using ( SqliteDataReader r = cmd.ExecuteReader() )
    {
      if ( r.Read() )
        result = (Int32) r.GetInt64( 0 );
    }
  }

  return result;
}
...