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

INSERTを失敗させるトリガー?可能?

    これからブログ投稿

    MySQLトリガー:アトリガーを使用してINSERT、UPDATE、またはDELETEをどのように中止しますか? EfNetの#mysql誰かが尋ねた:

    ビジネスルールが失敗した場合にトリガーで操作を中止するにはどうすればよいですか?

    MySQL 5.0および5.1では、アトリガーを失敗させて意味のあるエラーメッセージを配信するために、いくつかのトリックに頼る必要があります。 MySQL StoredProcedure FAQには、エラー処理について次のように記載されています:

    SP 11. SPには、「アプリケーションエラーを発生させる」ための「発生」ステートメントがありますか?申し訳ありませんが、現時点ではありません。 SQL標準のSIGNALおよびRESIGNALステートメントはTODOにあります。

    おそらく、MySQL 5.2には、MySQLStoredProcedureProgrammingから直接盗まれたこのハックを廃止するSIGNALstatementが含まれるでしょう。ハックとは何ですか?存在しない列の使用を強制的にMySQLに試みます。ぶさいくな?はい。それは機能しますか?わかりました。

    CREATE TRIGGER mytabletriggerexample
    BEFORE INSERT
    FOR EACH ROW BEGIN
    IF(NEW.important_value) < (fancy * dancy * calculation) THEN
        DECLARE dummy INT;
    
        SELECT Your meaningful error message goes here INTO dummy 
            FROM mytable
          WHERE mytable.id=new.id
    END IF; END;
    


    1. 到達した最大プロセスなしのTNS-12519

    2. データベースに断片化されたインデックスがないことを確認する方法

    3. MicrosoftOfficeのSalesforceSOQL

    4. SQL Server 2008での一括削除(データを削除するための一括コピー(bcp)のようなものはありますか?)