sql >> データベース >  >> RDS >> Mysql

MySqlトリガーでINSERT操作を中止するにはどうすればよいですか?

    私はこれに出くわしました、そして、解決策はうまくいきますが、私は後でより良い解決策のように私に感じるものに出くわしました。この質問に最初に答えたとき、これは選択肢ではなかったと思います。

    CREATE TRIGGER `TestTable_SomeTrigger`
    BEFORE UPDATE ON `test_table`
    FOR EACH ROW
    BEGIN
        DECLARE msg VARCHAR(255);
        IF (SomeTestToFail = "FAIL!") THEN
            set msg = "DIE: You broke the rules... I will now Smite you, hold still...";
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
        END IF;
    
        -- Do any other code here you may want to occur if it's all OK or leave blank it will be
        --  skipped if the above if is true
    END$$
    

    これにより、トラップできる素敵な(または邪悪な!)エラーメッセージが返されます。これについて詳しくは、 http://dev.mysql.com/doc/refman/5.5/en/signal.html

    これが他の誰かに役立つことを願っています!



    1. MINまたはMAXにnull値を含めるにはどうすればよいですか?

    2. Postgresは手動でシーケンスを変更します

    3. レベル15,000にこぼれるソート

    4. MariaDBでのUNHEX()のしくみ