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

MySQLトリガーが機能しない、単純な構文、複雑ではない

    ストアド関数またはトリガーは、関数またはトリガーを呼び出したステートメントによって(読み取りまたは書き込みのために)すでに使用されているテーブルを変更できません。

    差出人:ストアドプログラムの制限

    通常、挿入時に起動されるトリガーを使用して、挿入される値を変更する場合は、タイプBEFORE INSERTのトリガーを作成します。 NEWの値を変更します

    また、次のステートメントはとにかくあなたが望むものではないことに気づきました。

    update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));
    

    特定の行を更新しようとしているだけだと思いますが、テーブル全体が更新されます。とにかく、これは単純な計算なので、この列を実際に保存する必要はありません。表示時に同じように簡単に値を計算し、コードを大幅に簡素化して、トリガーの問題を回避できます。



    1. PostgreSQLの機能を拡張する10の方法

    2. DISTINCTキーワードを使用してSQLiteでAvg()の結果を微調整します

    3. 空のSQLiteデータベースを作成する方法

    4. Postgresがインデックスを使用しないのはなぜですか?