当前位置: 首页 > 面试题库 >

从mysql插入查询中获取新记录的主键ID?

谷翰飞
2023-03-14
问题内容

好的,可以说我正在INSERT对一个表进行mysql操作,并且该表的列item_id设置为autoincrementprimary key

如何获得查询以item_id在同一查询中输出新生成的主键的值?

目前,我正在运行第二个查询来检索ID,但是考虑到这可能会产生错误的结果,这似乎不是一种好习惯。

如果这不可能,那么确保我检索正确ID的最佳实践是什么?


问题答案:

您需要使用以下LAST_INSERT_ID()功能:http : //dev.mysql.com/doc/refman/5.0/zh-
CN/information-functions.html#function_last-insert-
id

例如:

INSERT INTO table_name (col1, col2,...) VALUES ('val1', 'val2'...);
SELECT LAST_INSERT_ID();

这将让你背PRIMARY KEY的最后一排的价值 插入:

生成的ID在 每个连接 的服务器中维护。这意味着函数返回给定客户端的值 是为该客户端 影响AUTO_INCREMENT列
最新语句生成的第一个AUTO_INCREMENT值。

因此,通过返回的值LAST_INSERT_ID()是每用户是 不会受到影响 的,可能在服务器上运行的其他查询 其他用户



 类似资料:
  • 假设我在我的一个表中执行MySQL操作,该表具有列,该列被设置为和。 如何获取查询以输出同一查询中新生成的主键的值? 目前,我正在运行第二个查询来检索id,但这似乎不是一个好的做法,因为这可能会产生错误的结果。 如果这是不可能的,那么什么是最佳实践,以确保我检索正确的ID?

  • 问题内容: 我正在使用Python 在mysql中运行查询 运行查询后,我想知道该行的主键。我知道有查询 但是我不确定它是否可以与插入忽略一起使用 做这个的最好方式是什么? 问题答案: 文档的说: 如果使用INSERT IGNORE并且忽略该行,则AUTO_INCREMENT计数器不会增加,并且LAST_INSERT_ID()返回0,这表明没有插入行。 知道了这一点,您可以将其分为多个步骤: 插入

  • 我正在使用mssql。插入记录后,我想获取数据的id。但我不知道该怎么做。我的代码如下。请给我答案。 Insert工作正常,但控制台日志[未定义]。。。。 这是表的ddl 在GO上设置ANSI\U NULL,在GO上设置QUOTED\U IDENTIFIER。[特征]( [id]nvarchar NOT NULL CONSTRAINT[DF\u Feature\u id]DEFAULT(CONVE

  • Val1 Val2 Val3 Val4 Val5 Val6 Val7 Val8 Val9 Val10 Val11 Val12 Col1 Col2 Col3 Col4 Col5 Col6 Val1 Val2 Val3 Val4 Col5 Val5 Val1 Val2 Val3 Val4 Col6 Val6 Val1 Val2 Val3 Val4 Col7 Val7 Val1 Val2 Val3 Va

  • 问题内容: 我有一个插入查询(活动记录样式),用于将表单字段插入到MySQL表中。我想获取插入操作的最后一个自动递增的ID作为查询的返回值,但是我有一些问题。 控制器内部: 而内部模型: 作为模型中add_post的返回,我一无所获 问题答案: 尝试这个 如果有多次插入,您可以使用

  • 问题内容: 在下表中,如何仅根据登录列获取的 最新记录 ,而不是所有3条记录? 问题答案: 使用按ID分组的汇总。这将列出每个最新的。 要获取完整的单个记录,请对仅返回每个ID 的子查询执行。