[英]RAILS Add trigger into a 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
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 <<-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
這是因為Rails可以執行指令“ DELIMITER”,因為它是mysql語法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.