【发布时间】:2014-10-10 12:49:18
【问题描述】:
在 MySQL 5.5 上,我正在尝试编写一个触发器来执行以下操作:
- 检查插入条件(group_id 是否在 8-20 之间?)
- 如果条件为真,则在 另一个表 上更新具有相同 user_id 的用户,称为 phpbb_users。
- 对这个其他表的更新是将 user_rank 设置为 NEW.group_id 从具有触发器的表上的插入。
- 否则,什么也不做。
完全没有经验,卡住了。我运行查询时它不起作用。这是我到目前为止所得到的。
DELIMITER $$
CREATE OR REPLACE TRIGGER upd_rank AFTER INSERT ON `phpbb_user_group`
FOR EACH ROW BEGIN
IF (NEW.group_id BETWEEN 8 AND 20) THEN
UPDATE phpbb_users
SET user_rank=NEW.group_id
WHERE user_id=NEW.user_id;
ELSE
UPDATE phpbb_users
SET user_rank='0'
WHERE user_id=NEW.user_id;
END IF;
END$$;
DELIMITER;
(请注意,“else”子句实际上是不必要的 - 很高兴有任何改进此代码的建议!)
【问题讨论】:
-
您的问题是什么?这段代码有问题吗?
-
你可以使用
user_rank=IF(NEW.group_id BETWEEN 8 AND 20,NEW.group_id,0) -
是的,它没有在数据库上执行。我非常缺乏经验,我无法弄清楚它有什么问题。
-
END$$后面的;看起来不正确。
标签: mysql sql triggers delimiter conditional-statements