1

MySQL で同等のステートメントを実行するにはどうすればよいですか? 入力が特定の値の場合、行を挿入しないでください。SQL SERVER では、ROLLBACK とだけ言えます。MySQL で同等のコマンドは何ですか? ありがとうございました。

CREATE TRIGGER tr_some_trigger
ON some_table
FOR INSERT
AS 
BEGIN
  IF inserted.topic == 'test' THEN
    ROLLBACK
  ENDIF
END
4

2 に答える 2

2

この文書から:

トリガーは、START TRANSACTION、COMMIT、または ROLLBACK などのトランザクションを明示的または暗黙的に開始または終了するステートメントを使用できません。

したがってROLLBACK、トリガー内では機能しませんが、トリガーが例外/エラーを発生させると、挿入が成功しなくなります。そのため、条件が満たされた場合に例外を発生させることができます (1 つの方法は、未定義の関数を呼び出すことです)。 )。

例えば:

DELIMITER $$

CREATE
    TRIGGER `db`.`before_insert` BEFORE INSERT
    ON `db`.`dummy_table`
    FOR EACH ROW BEGIN
    IF new.topic = 'test' THEN
        CALL func_1();
    END IF;

    END$$

DELIMITER ;

func_1 が存在しないと仮定すると、新しいレコードが挿入されなくなります。

于 2012-06-21T23:50:40.783 に答える
1

MySQLでもロールバックです。こちらのドキュメントをご覧ください。

于 2012-06-21T23:36:28.500 に答える