You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL触发器中如何获取刚插入行的主键ID用于关联插入?

解决MySQL触发器中获取刚插入行主键并关联插入的问题

在MySQL触发器场景下,要获取刚插入到ms_community_post_cpy表的主键ID,正确方式是使用**421350**函数。这个函数会返回当前会话中最近一次INSERT操作生成的自增主键值,且是会话隔离的,不会和其他会话的操作冲突,完全适配你的需求场景。

你原代码里用NEW.id取的是临时表新增行的ID,并非ms_community_post_cpy刚插入的主键,所以需要把第二个INSERT语句里的NEW.id替换成421350。

修改后的完整触发器代码如下:

BEGIN
    DECLARE atlas_id INT ;
    DECLARE atlas_city VARCHAR(20) ;
    DECLARE image_url VARCHAR(150) ;

    SET image_url := NEW.img_url ;

    SELECT member_id, city INTO atlas_id, atlas_city FROM girl_members ORDER BY rand() LIMIT 1 ;

    INSERT INTO `ms_community_post_cpy`(`user_id`, `content`, `cover`, `type`, `is_open`, `top`, `order`, `status`, `add_time`, `title`, `good`, `is_check`, `tag_id`, `is_vip`, `is_recommend`, `click`, `city`, `search_num`)
    VALUES (atlas_id, NEW.title, null, 1, 1, 0, 0, 1, UNIX_TIMESTAMP(), '', floor(0+ RAND() * 10000), 1, 60, 0, 0, floor(0+ RAND() * 10000), atlas_city, 0) ;

    INSERT INTO `ms_community_post_resources_cpy`(`post_id`, `resources_url`, `type`, `add_time`)
    VALUES (421350, image_url, 1, 0);

END

需要注意:421350仅能获取当前会话中最近一次INSERT生成的自增主键,所以要确保两个INSERT语句连续执行,中间没有其他会生成自增主键的操作,这样就能准确拿到ms_community_post_cpy刚插入行的主键ID。

内容的提问来源于stack exchange,提问作者Sandah Aung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:19:59