问题标签 [lastinsertid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1913 浏览

mysql - 我们什么时候给 LAST_INSERT_ID() 一个参数?

从这里引用:

以上的用例是什么(有什么好处)?

我之前从未使用过带有任何参数的 LAST_INSERT_ID ...

更新

我的问题是,当它通过自动递增的主键自动开箱即用时,为什么要以这种方式模拟这种序列?

0 投票
2 回答
6098 浏览

php - MySQL + PHP:获取多个/复合主键的last_id

我需要获取具有多列主键的表的最后插入 id。

  • 这些表没有 AUTOCOUNT 列。
  • 我正在使用参数化查询(任意顺序)
  • 使用 PHP (5.3) 和 MySQLi 模块
  • 任意 INSERT SQL 查询。(任何格式)

例如:

结果: $last_id = $mysqli->insert_id ?: getInsertedId() ;

此时我有一个名为 getPK() 的函数,它返回给我:

我现在需要的是实现getInsertedId()。在不使用 SQL 解析器的情况下,这可能是最简单的方法?

我很确定这个问题已经有了答案,但我找不到任何东西......

更新

我问这个问题的原因是因为我有一个类可以控制与 MySQL 数据库相关的所有内容(个人框架的一部分)。我有一种称为set()的方法,其中传递了查询(如 UPDATE、INSERT、DELETE 等)。我还有其他特定的方法,例如insert(),其中传递了数组。

我有一个存储last_inserted_id 的变量。以后可以随时调用该变量。我在具有多个主键的不同系统中有许多表。使用insert()方法时,设置 last_inserted_id 值没有问题,但是当某些系统使用set()方法时,我无法检索该值,我必须返回 0。我想更改该行为。

我想用上面的例子来简化我的解释。

更新 2

并非所有系统都由我自己控制。例如,其中一个系统调用soap 方法,在该方法中发送查询以执行(任何类型的查询)。这些由set()方法处理。然后还有其他soap方法可以检索最后一个id。为了保持一致性,我想返回该值。

0 投票
1 回答
1933 浏览

insert - Sybase JDBC 获取生成的密钥

在 Postgres 中,我可以写

检索插入期间生成的所有值。在 Oracle、HSQLDB 中,我可以使用

检索已生成的所有值。MySQL 有点受限,只返回设置为AUTO_INCREMENT. 但是,如何使用 Sybase SQL Anywhere 做到这一点?JDBC 驱动程序没有实现这些方法,并且没有INSERT .. RETURNING子句,就像在 Postgres 中一样。有没有办法做到这一点,除了可能运行

插入后立即?

0 投票
3 回答
1775 浏览

c# - SQLite在连接关闭后获取最后一行ID

我有两个功能。

一 插入数据库。它打开连接并在插入后关闭它。其他是GetLastID 函数。

我知道我可以查询最大的 ID,但有人告诉我这是一种不好的做法。

“选择 sqlite_last_insert_rowid();” 似乎没有用,因为我在插入后关闭了连接。

0 投票
3 回答
21824 浏览

mongodb - 如何在 mongoDB 中获取最后 50 个文档?

如何在 mongoDB 中获取最后 50 个文档?

我有一个收藏品,由

从这个“集合”

我想要最后 50 个文档而不是前 50 个文档。

我知道我可以通过使用获得前 50 个文档

但是我怎样才能得到最后 50 个文件呢?

这可以简单地使用 MongoDB API 来完成,还是我应该通过编程来实现?

0 投票
2 回答
11579 浏览

python - 将元组的元素插入数据库

我有一个元组,我想存储它的元素,我试图将它插入如下,它给出了以下错误,我做错了什么?records_to_be_inserted 是具有 8 个元素的元组。

Traceback(最近一次通话最后一次):文件“/home/tayfun/workspace/personal_guide/modules/mainwindow.py”,第 57 行,在 save_records 照片、地址、注释、日期)VALUES(?,?,?,?,? , ?, ?, ?)", self.records_to_be_inserTed) sqlite3.ProgrammingError: 提供的绑定数量不正确。当前语句使用 8,提供了 0。

0 投票
1 回答
639 浏览

mysql - 使用“之前”触发器插入后的 MySQL PDO LastInsertID 返回错误值

我有一个带有 ID (auto_inc)、名称、...和 ​​customer_code 字段的客户表。该表还有一个“before”触发器,从另一个表中选择一个客户代码,并在向该表中插入新记录之前设置customer_code字段。完美运行。

问题是当我检索 lastInsertID() 它总是返回 1 !

我正在使用 PDO 和 PHP。

谢谢你的帮助!

0 投票
2 回答
2862 浏览

php - mysql_last_id() 的竞争条件

我花了一天的大部分时间试图找到答案,但似乎没有答案。我需要在表中创建一行,从插入的行中检索自动增量,然后使用该值在第二个表中插入另一行的函数。功能类似于以下 php:

我遇到的问题是,在我的应用程序中,所有类之间共享一个 MySQL 连接,所以我担心这可能会导致竞争条件,其中另一个类在运行第一行和第二行之间插入一行上面提到的。

我能想到的最简单的解决方案是让任何使用mysql_insert_id()打开一个新的、唯一的连接的函数,但这似乎是一个巨大的不必要的开销。我玩过的其他答案包括插入一个唯一值(可能使用创建UUID())并使用它而不是自动增量值,或者可能将第一个插入和调用LAST_INSERT_ID()放入存储的函数中(尽管我不确定是否可以解决可能的竞争条件)。

我也一直在研究事务,看看它们是否有帮助,但几乎没有关于如何mysql_insert_id()与它们进行交互的文档。我能说的最好的,他们可能不会在这里提供帮助,因为另一个INSERT与任何事务锁不冲突的锁仍然能够执行并可能导致相同的竞争条件。

因此,假设我对上述任何一项都没有错误(如果我错了,请纠正我),确保 100% 第二个INSERT使用正确值的最佳方法是什么?

0 投票
2 回答
6246 浏览

orm - Kohana 3 ORM检索最后一个插入ID

->save() 调用后有没有办法获取最后一个插入 ID?

示例代码:

0 投票
5 回答
53005 浏览

php - 如何在 SQLite 中获取最后一个插入 ID?

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

请帮我。

谢谢