当向临时表添加新行时,我需要在 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
)中,但我不知道如何获取主键的值第一个表中新插入的行。正确的获取方式是什么?
样品:
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 |