web-dev-qa-db-fra.com

Comment obtenir le dernier insert ID dans SQLite?

Existe-t-il une fonction intégrée disponible dans SQLite pour extraire l'ID de la dernière ligne insérée? Par exemple: - Dans mysql, nous avons LAST_INSERT_ID() ce genre de fonction. Pour sqllite, toute fonction disponible pour effectuer le même processus.

Aidez-moi, s'il vous plaît.

Merci

16
learner

SQLite

Ceci est disponible en utilisant la fonction SQLite last_insert_rowid() :

La fonction last_insert_rowid () renvoie le ROWID de la dernière ligne Insérée à partir de la connexion à la base de données ayant appelé la fonction. La fonction SQL Last_insert_rowid () est une enveloppe autour de la fonction d'interface Sqlite3_last_insert_rowid () C/C++.

PHP

La version/liaison de PHP de cette fonction est sqlite_last_insert_rowid() :

Renvoie le rowid de la dernière ligne insérée dans la base de données , Si elle a été créée en tant que champ à incrémentation automatique.

20
Treffynnon

Lors de l’utilisation de SQLite version 3 avec PDO SQLite, cela peut ressembler à ceci:

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

echo $conn->lastInsertId()
15
Behzad-Ravanbakhsh

Il a last_insert_rowid()

La fonction last_insert_rowid () renvoie le ROWID de la dernière ligne Insérée à partir de la connexion à la base de données ayant appelé la fonction.

4
Alex K.
2
Alex Pliutau

C'est une méthode courte en C # qui fonctionne pour moi. Int32 est assez grand pour mes besoins.

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;
}
0
Gary Z