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

mySQLトリガーは、コンソールの挿入後には機能しますが、スクリプトの挿入後には機能しません

    特にコンソールから正常に実行されるため、トリガーが実行されていないというよりも、キャッチされていないエラーが発生している可能性がはるかに高いと思います。

    エラーが発生した場所(トリガー自体、または呼び出し元のスクリプト)を特定する必要があります。

    Pythonスクリプトで、Pythonが実行のためにMySQLに送信するSQLステートメントを出力して、期待どおりに構築されるようにします。たとえば、NEW.typeが'PRE'と等しくない場合、トリガーは実行されますが、更新は行われません。

    また、挿入のエラーをチェックしていることを確認してください。私はPythonプログラマーではないので、それがどのように行われるかはわかりませんが、これ あなたが探しているもののようです。

    これらのいずれも問題につながらない場合は、if (NEW.type = 'PRE') THEN全体をコメントアウトしてください。 ブロックして、NEW.typeを「debug」に設定するなどの簡単な変更を行います。トリガーが実際に実行されることを確認した後、問題を特定するまで、実際のコードをさらに追加して、連続して再テストします。

    また、Marcosのコメントによると、スクリプトが正常に完了したときに自動コミットされなかった場合は驚きます。確かに、私はあらゆるスクリプト/言語についてこの声明を出します。



    1. SQL Serverの内部:問題のあるオペレーターPt。 II –ハッシュ

    2. LogMinerを使用して現在の変更を見つける

    3. データベースからbase64画像を取得する

    4. 内部結合でのインデックス使用の代わりにMySQL範囲チェック