Mysql 创建SQL触发器以更新行值
我有一个SQL表“收件箱”,列为“调制解调器id”和“用户” 我想创建一个SQL触发器,当modem_id为1时,“user”列被插入值“a”;2对于用户“B” 我已使用if-else创建了一个SQL触发器:Mysql 创建SQL触发器以更新行值,mysql,database-trigger,Mysql,Database Trigger,我有一个SQL表“收件箱”,列为“调制解调器id”和“用户” 我想创建一个SQL触发器,当modem_id为1时,“user”列被插入值“a”;2对于用户“B” 我已使用if-else创建了一个SQL触发器: delimiter // CREATE TRIGGER upd_user_inbox BEFORE insert ON inbox FOR EACH ROW BEGIN IF NEW.modem_id = 0 THEN UPDATE `in
delimiter //
CREATE TRIGGER upd_user_inbox BEFORE insert ON inbox
FOR EACH ROW
BEGIN
IF NEW.modem_id = 0 THEN
UPDATE `inbox` SET `user` = 'A' WHERE modem_id = 1;
ELSEIF NEW.modem_id = 2 THEN
UPDATE `inbox` SET `user` = 'B' WHERE modem_id = 2;
ELSEIF NEW.modem_id = 3 THEN
UPDATE `inbox` SET `user` = 'C' WHERE modem_id = 3;
ELSEIF NEW.modem_id = 4 THEN
UPDATE `inbox` SET `user` = 'D' WHERE modem_id = 4;
ELSEIF NEW.modem_id = 5 THEN
UPDATE `inbox` SET `user` = 'E' WHERE modem_id = 5;
ELSEIF NEW.modem_id = 6 THEN
UPDATE `inbox` SET `user` = 'F' WHERE modem_id = 6;
ELSEIF NEW.modem_id = 7 THEN
UPDATE `inbox` SET `user` = 'G' WHERE modem_id = 7;
ELSEIF NEW.modem_id = 8 THEN
UPDATE `inbox` SET `user` = 'H' WHERE modem_id = 8;
END IF;
END;//
delimiter ;
触发器已成功执行,但不工作。
如果“If else”不起作用,谁能教我用“case”来代替呢
谢谢
无法修改触发器中的表,该触发器是通过修改同一个表q.v.调用的。您可以通过编写存储过程来处理此问题。是否要将当前插入行中的用户列设置为“a”、“B”等?如果是这样,不要使用更新,只需设置
NEW.user='A'
等@RyanVincent yeah它通过使用:If NEW.modem_id=1然后设置NEW.user='A'来工作;感谢您无法在通过修改同一个表q.v.调用的触发器中修改表。您可以通过编写存储过程来处理此问题。是否要将当前插入行中的用户列设置为“a”、“B”等?如果是这样,不要使用更新,只需设置NEW.user='A'
等@RyanVincent yeah它通过使用:If NEW.modem_id=1然后设置NEW.user='A'来工作;谢谢
CASE NEW.modem_id
WHEN 0 THEN ...
WHEN 2 THEN ...
...
END CASE