MySQL触发器:新创建行的id

问题描述 投票:0回答:1

当向临时表添加新行时,我需要在 MySQL 数据库的两个表中插入两行。 (这里的表名是开玩笑的。)

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 (NEW.id, image_url, 1, 0);

END

这里我需要将第一个插入表的ID即

ms_community_post_cpy
插入到另一个表(
post_id
)的字段(
ms_community_post_resources_cpy
)中,但我不知道如何获取主键的值第一个表中新插入的行。正确的获取方式是什么?

mysql triggers
1个回答
0
投票

样品:

CREATE TABLE t1 (id1 INT AUTO_INCREMENT PRIMARY KEY) AUTO_INCREMENT = 10;
CREATE TABLE t2 (id2 INT AUTO_INCREMENT PRIMARY KEY, id1 INT) AUTO_INCREMENT = 20;
CREATE TABLE t3 (id3 INT AUTO_INCREMENT PRIMARY KEY) AUTO_INCREMENT = 30;
CREATE TRIGGER tr 
AFTER INSERT ON t3
FOR EACH ROW
BEGIN
  INSERT INTO t1 VALUES (DEFAULT);
  INSERT INTO t2 VALUES (DEFAULT, LAST_INSERT_ID());
END
INSERT INTO t3 VALUES (DEFAULT), (DEFAULT);
SELECT * FROM t3;
SELECT * FROM t1;
SELECT * FROM t2;
id3
30
31
id1
10
11
id2 id1
20 10
21 11

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.