Mysql RAILS将触发器添加到迁移中
我在rails应用程序中使用mysql,我想创建一个触发器,但需要迁移。 这是我的sql代码Mysql RAILS将触发器添加到迁移中,mysql,ruby-on-rails,ruby,triggers,migration,Mysql,Ruby On Rails,Ruby,Triggers,Migration,我在rails应用程序中使用mysql,我想创建一个触发器,但需要迁移。 这是我的sql代码 DELIMITER ;; CREATE TRIGGER check_validation_participant BEFORE UPDATE ON participants FOR EACH ROW BEGIN DECLARE valide INTEGER; IF NEW.current_state = 1 THEN SELECT COUNT(*) INTO valide FRO
DELIMITER ;;
CREATE TRIGGER check_validation_participant
BEFORE UPDATE ON participants
FOR EACH ROW
BEGIN
DECLARE valide INTEGER;
IF NEW.current_state = 1 THEN
SELECT COUNT(*) INTO valide
FROM participants
WHERE user_id = NEW.user_id
AND current_state = 1;
IF valide > 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Un événement est déjà validé pour cet utilisateur';
END IF;
END IF;
END;;
在迁移过程中,我将这段代码写入execute“…”中,但我有很多语法错误。
谢谢:)好的,你只要做
execute <<-SQL
CREATE TRIGGER check_validation_participant
BEFORE UPDATE ON participants
FOR EACH ROW
BEGIN
DECLARE valide INTEGER;
IF NEW.current_state = 1 THEN
SELECT COUNT(*) INTO valide
FROM participants
WHERE user_id = NEW.user_id
AND current_state = 1;
IF valide > 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Un événement est déjà validé pour cet utilisateur';
END IF;
END IF;
END;
SQL
execute请解释您遇到的错误。