1

トリガーをオフに設定する削除クエリからのグローバル変数を参照するトリガーがあります。

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 ステートメント内にセミコロンが必要ですか?

4

1 に答える 1

1
CREATE TRIGGER test_trigger BEFORE DELETE ON test_table FOR EACH ROW 
BEGIN
  IF (SELECT @userID IS NULL) 
  THEN 
    SET @userID = 0;
END IF;
END;
于 2013-02-07T11:12:17.500 に答える