削除更新後に MySQL トリガーが機能しない
P粉155832941
P粉155832941 2024-02-03 22:07:06
0
1
395

この問題についてはフォーラムにたくさんの情報があるため、再度質問して申し訳ありません。しかし、私の問題が他の問題とは異なることを願っています。私の下手な英語でごめんなさい。

最初に 2 つのテーブル (親テーブルと子テーブル) があります。 親(位置)

loc_id loc_size
1 100
2 75

子供たち(エリア)

###乾燥### 12これは削除後のトリガーです。
ar_loc_id ar_size
2 35
2 40
リーリー

たとえば、ar_id = '2' を削除したい場合、ar_size は loc_size の位置で更新されます。

loc_size 値は「0」であるため、トリガーの実行後の値は 40 になります。

問題は、トリガーが正しく実行されていないことです。トリガーの実行後、loc_size はまったく更新されず、「0」値だけが更新されます。

何かが足りないのか、それとも単に機能しないために何かが起こっているのでしょうか。

この問題の解決を手伝ってください。 どうもありがとうございます。

P粉155832941
P粉155832941

全員に返信(1)
P粉639667504

トリガーに問題はないようですね。テストしてみたところ、うまくいきました。これを完了するために、テーブル region に挿入トリガーを追加しました。

リーリー

ご覧のとおり、挿入操作と削除操作の両方で、値がそれに応じて更新されます。
-- ここから更新します --

これはトリガー after_insert_area_location の拡張バージョンであり、データの整合性を維持するために新しく追加された IF ステートメントを示します。 SIGNAL ステートメントはエラーを発生させるために使用され、警告メッセージとして機能し、操作を終了することに注意してください。

リーリー

ご覧のとおり、トリガーの IF ステートメント内の SIGNAL ステートメントにより、SQL_STATE コード 77777 とメッセージ「Is Preliminary set」のエラーが発生しました。これにより、新しい行が挿入されてから加えられた変更が元に戻されます。

リーリー

つまり、トリガーで IF ステートメントを使用すると、データ フローをある程度制御できます。 SIGNAL ステートメントを使用すると、意図的にエラーを呼び出して、トリガーの実行を停止または元に戻したり、トリガーのアクションを開始したりすることができます。前述したように、トリガー内の UPDATE が実行されないだけでなく、トリガーをトリガーした insert ステートメントも取り消されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート