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

mysql在触发器中获取last_insert_id()

汪弘光
2023-03-14
问题内容

据我了解,当您调用last_insert_id()时,它是通过连接进行的,因此您将获得插入到调用last_insert_id()的同一连接中的最后一行的ID,对吗?

那么,如果我在“ AFTER INSERT”触发器中调用last_insert_id()怎么办?

我想做的基本上是这样

DELIMITER $$
CREATE TRIGGER sometrigger
AFTER INSERT ON sometable
BEGIN
  INSERT INTO anothertable (id, lastup) VALUES (last_insert_id(), NOW());
END $$

“ anothertable”中的id与“ sometable”中的id非常重要,这是否可行?还是应该创建一个存储过程插入到两个表中?

还是触发器中有一些要从导致触发器触发的insert语句中获取值?我还没有发现任何东西。


问题答案:

您应该能够使用它NEW.{id column name}来引用最后一个插入ID(例如,NEW.id如果自动递增列被调用id。)



 类似资料:
  • 我在WordPress数据库中编写了一个MySQL触发器&它给出了一个错误。我的触发器代码如下: 它会给出以下错误消息: 错误 SQL查询:文档 CREATE[DEFINER={user CURRENT_USER}]trigger up_trig AFTER INSERT ON每一行BEGIN DECLARE“选择DISTINCT()INTOFROM其中='panchayat_id'和=new。(

  • 问题内容: 我有一个顾客。 当将新行添加到此客户表时,如果新行的(主键)已经在客户表中,则我想使用其他字段对现有(旧)行进行更新。()。 否则(如果不在表中)插入新行。我知道我可以使用触发器在mssql中做到这一点。有没有一种方法可以在mysql中做到这一点。 问题答案: MySQL没有触发器,但是它具有REPLACE和INSERT … ON DUPLICATE KEY UPDATE (请参阅文档

  • 我试图在插入后创建一个触发器,它将更新另一个表。 这是我尝试的代码: 但我会收到以下错误消息: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“@qte AS integer”附近的正确语法;声明@code为整数;从INSERTED中选择@QTE=qteInv;%s“位于第4行

  • 问题内容: 如果我 在表上有,如何抛出错误以阻止对该表进行更新? 问题答案: 这是一种可行的技巧。这不是干净的,但看起来可能可行: 本质上,您只是尝试更新不存在的列。

  • 我知道这是非常不受赞扬的, 我知道这是一个性能、速度等方面的问题,但这是一个集成问题,他们只通过mysql进行更新(我知道这样做也很疯狂,但我无法改变他们所做的,他们正在进行大量的销售,所以他们不想改变任何事情)。 我只需要发布到一个URL(它可以像http://www.google.com?id=skuid) 我读了这个博客和堆栈,但他们是2岁,想知道是否有替代使用udf: http://ope

  • 本文向大家介绍MySQL触发器 Update触发Insert失败,包括了MySQL触发器 Update触发Insert失败的使用技巧和注意事项,需要的朋友参考一下 今天工作需要,想要实现将仅对状态更新的表进行历史记录显示,于是考虑在原表中建立触发器,将更新的内容同时写入另一张表 于是进行测试 执行触发器语句,报错,报错内容如下: 分析,由于访问工具HediSQL,导致无法正常创建触发器,相同语句,