Mysql触发器复合语句

Mysql触发器复合语句,mysql,triggers,Mysql,Triggers,正在寻找有关mysql触发器和使用多个语句的帮助 我试图实现的是在插入之前,我想从活动表->历史表复制记录,然后删除它们,然后执行插入。该代码非常适合从active->history复制记录。但是,当我在ie中输入delete时,触发器就会发出砰砰声。它仍然会移动记录,但不会删除旧的行 想法/想法 CREATE DEFINER = 'root'@'%' TRIGGER tradesfinder.On_Checkin_active_Insert BEFORE INSERT ON tradesfi

正在寻找有关mysql触发器和使用多个语句的帮助

我试图实现的是在插入之前,我想从活动表->历史表复制记录,然后删除它们,然后执行插入。该代码非常适合从active->history复制记录。但是,当我在ie中输入delete时,触发器就会发出砰砰声。它仍然会移动记录,但不会删除旧的行

想法/想法

CREATE 
DEFINER = 'root'@'%'
TRIGGER tradesfinder.On_Checkin_active_Insert
BEFORE INSERT
ON tradesfinder.user_checkin_active
FOR EACH ROW
BEGIN

INSERT INTO user_checkin_history
SELECT *
FROM user_checkin_active
WHERE user_id = new.user_id;

DELETE FROM user_checkin_active 
WHERE user_id = new.user_id;
END
提前谢谢


C

如果id存在,我想您需要更新,而不是删除然后插入。试试这个:

INSERT INTO `user_checkin_active` (user_id, b, c) 
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE b =new.b, c = new.c;

我认为上面显示的触发器语法不会像预期的那样工作。与其触发select*,不如使用新行。因此,与“insert into user_checkin_history select*…”不同,您希望使用触发器使其产生“insert into user_checkin_history(a、b、c、d)值(new.a、new.b、new.c、new.d)”的效果,然后只插入新行的内容


否则,每次用户插入内容时,您都会为给定用户拾取所有行X。这可能不是您想要的。

触发器前是否有
分隔符
语句?