26

SQLite 中是否有任何内置函数可用于获取最后插入的行 ID。例如:- 在 mysql 中,我们有LAST_INSERT_ID()这种函数。对于 sqllite 任何可用于执行相同过程的函数。

请帮我。

谢谢

4

5 回答 5

27

SQLite

这可以使用SQLitelast_insert_rowid()函数获得:

last_insert_rowid() 函数从调用该函数的数据库连接返回最后一行插入的 ROWID。last_insert_rowid() SQL 函数是 sqlite3_last_insert_rowid() C/C++ 接口函数的包装。

PHP

此函数的 PHP 版本/绑定是sqlite_last_insert_rowid()

返回最近插入数据库 dbhandle 的行的 rowid(如果它是作为自动增量字段创建的)。

于 2012-01-17T10:27:01.567 回答
16

当使用带有 PDO SQLite 的 SQLite 版本 3 时,它可以是这样的:

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

echo $conn->lastInsertId()
于 2013-04-27T13:11:57.993 回答
4

它有last_insert_rowid()

last_insert_rowid() 函数从调用该函数的数据库连接返回最后一行插入的 ROWID

于 2012-01-17T10:26:56.470 回答
2

sqlite_last_insert_rowid(资源 $dbhandle)

于 2012-01-17T10:25:58.733 回答
1

这是一个对我有用的简短 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;
}
于 2018-05-22T06:25:00.160 回答