トリガーをオフに設定する削除クエリからのグローバル変数を参照するトリガーがあります。
DELIMITER ;;
CREATE TRIGGER test_trigger BEFORE DELETE ON test_table FOR EACH ROW
BEGIN
IF (SELECT @userID IS NULL)
THEN @userID := 0
END IF;
END
;;
DELIMITER ;
何らかの理由で、SQL エラーが発生します。
SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@userID := 0
これが理解できません。これは非常に基本的な IF ステートメントですが、なぜ機能しないのですか?
更新:私は完全に混乱しています、私はこれを試しました
IF TRUE
THEN TRUE
END IF;
それでもエラーがスローされます...真剣に?
更新 2: 解決済みこれは実際に機能しますが、非常に奇妙です
IF (SELECT @userID IS NULL)
THEN SET userID = 0;
END IF;
どうやら IF ステートメント内にセミコロンが必要ですか?