mysql - 在插入触发器后将数据插入其他表

标签 mysql triggers insert

I have two tables - 

League        (lg_id, lg_Userid, lg_JoinDate)

此处,lg_id为PK,自增。

LeagueMember  (lgMbr_lg_id, lgMbr_Userid, lgMbr_JoinDate) 

lgMbr_lb_id 是一个 FK 引用 League(lg_id)

在 League 表中插入一行后,应将相应的行插入到 leagueMember 中,该行具有与插入 League 表中相同的 lg_id。我正在尝试为此创建一个插入后触发器。

CREATE TRIGGER trigger_league AFTER INSERT ON `League` 
FOR EACH ROW 
BEGIN 
    INSERT INTO `LeagueMember` (`lgMbr_lg_id`, `lgMbr_Userid`,`lgMbr_JoinDate`) values (NEW.lg_id,NEW.lg_UserId,'2000-10-10')
END;

我试过了,但没用。这里有什么问题吗?

编辑 -

我收到一条错误消息,指出我的语法有错误。基于此mysql create trigger reference page我什至尝试过这个,但我仍然遇到语法错误。

CREATE TRIGGER trigger_league AFTER INSERT ON `League` 
FOR EACH ROW 
BEGIN 
    INSERT INTO `LeagueMember` SET lgMbr_lg_id = NEW.lg_id;    
END;

最佳答案

也许这会有所帮助???

drop table if exists league;
create table league
(
league_id smallint unsigned not null auto_increment primary key,
user_id int unsigned not null,
name varchar(255) unique not null
)
engine=innodb;

drop table if exists league_user;
create table league_user
(
league_id smallint unsigned not null,
user_id int unsigned not null,
created_date datetime not null,
creator_flag tinyint unsigned not null default 0,
primary key (league_id, user_id)
)
engine=innodb;


drop procedure if exists create_league;
delimiter #

create procedure create_league
(
in p_user_id int unsigned,
in p_name varchar(255)
)
begin

declare v_league_id smallint unsigned default 0;

    insert into league (user_id, name) values (p_user_id, p_name);

    set v_league_id = last_insert_id();

    call add_league_user(v_league_id, p_user_id, 1); -- 1 = owner
end #

delimiter ;

drop procedure if exists add_league_user;
delimiter #

create procedure add_league_user
(
in p_league_id smallint unsigned,
in p_user_id int unsigned,
in p_creator_flag tinyint unsigned
)
begin
    insert into league_user (league_id, user_id, created_date, creator_flag) values 
        (p_league_id, p_user_id, now(), p_creator_flag);
end #

delimiter ;

call create_league(1,'Premiere League');

call add_league_user(1,2,0);
call add_league_user(1,3,0);
call add_league_user(1,4,0);

select * from league;
select * from league_user;

关于mysql - 在插入触发器后将数据插入其他表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239948/

相关文章:

mysql - 选择 FOR UPDATE 会出现重复键错误

mysql - 在mysql中使用COALESCE来获取运费

mysql - 如何将 mysql 表中的所有更改记录到第二个表中?

mysql - 如果 MySQL 中存在则删除触发器

mysql - 当执行 MySQL INSERT 时,如果由于重复键导致插入失败,有没有办法返回该键的 id?

PHP和mysql字符集问题

c# - C# 应用程序中 where 子句中的未知列

mysql - 使用 Where 子句在 MySql 中创建触发器

arrays - 将多个索引处的项目插入数组

MySQL:SELECT 重复输入错误...INSERT INTO 带有 UNIQUE 约束