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

MySQLトリガーで、NEW.colを使用してユーザー変数を設定し、それを更新クエリで使用することは可能ですか?

    動的SQL/プリペアドステートメントで説明されているように、これは不可能です。 Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger CREATE TRIGGERさえしようとすると 。

    自動化に最も近い方法は、CREATE EVENTを使用することです。 。イベントは、選択したスケジュール/間隔で実行されるスケジュールされたストアドプログラムです。間隔は次のとおりです。

    上に描いているテーブルのように、挿入後トリガーがある行にいわば「フラグ」を設定できます。その後、イベントはプリペアドステートメント<を実行できます。 / a> 動的に実行します。

    イベント管理 で私の回答をご覧ください 。

    イベントで実行されたとしても、あなたが提案しているのはほぼ常に ピアレビューに耐えられない貧弱なスキーマ設計の兆候。

    動的SQLとPreparedStmtが許可されない理由は、トリガーを高速にする必要があり、DDLでさえ文字列に忍び込んで実行される可能性があるためです。そして、ALTER TABLEのようなDDLstmts トリガーでは許可されていません(文字通り実行するには数時間かかる場合があります)。

    スキーマでは、1つのテーブルを列ven_codeと共有することもできます。 微分器の列です。 代わりに、ven_codeごとに新しいテーブルを作成することを選択しました 。 これは通常、設計とパフォーマンスの選択としては不十分です。

    スキーマ設計についてサポートが必要な場合は、チャットルームで喜んでお話しします。



    1. djangoアプリのHerokuプッシュはpsycopg2.extensionsという名前のモジュールを取得しません

    2. MySQL:LIKE演算子でエスケープが機能しないのはなぜですか?

    3. MySQLの多対多の関係

    4. SQLServerの欠落インデックス