問題タブ [mutating-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
458 参照

triggers - テキスト文字列の一部を置き換えるOracle 11gトリガー

変化し続けるトリガーに問題があります。トリガーの目的は、ファイル パスが更新されたときに文字列の一部を変更することです。これが私がこれまでに持っているものです。うまくコンパイルされます。

単一の行を更新するテストを行うと、通常の変更テーブル エラーが発生します。何かアドバイス?私は非常に感謝しています!

0 投票する
1 に答える
368 参照

sql - Oracle Trigger - 更新時に、同じテーブル内の他の行を更新する必要があります - 変更エラーが発生します

私が依頼された厄介なハックの一部として、テーブル内の関連レコードを更新するようにトリガーを変更する必要がありますが、テーブルの変更エラーが発生しています。

データは次のようになります。

person_id = 1 の active_ind が N に設定されている場合、同じルート (route_id = 1) に関連付けられている他の人物の active_id も N に設定する必要があります。

正常に機能する他のルート関連テーブルを更新する現在のトリガー (更新後) があります。次のコードを追加すると、変更テーブル エラーが発生します。

これは、更新中にテーブルを更新しようとしていることが原因です。誰でも解決策を提案できますか?

0 投票する
1 に答える
69 参照

plsql - 行トリガー後の変更テーブルの問題

1 つのプロシージャと 1 つの関数を含むパッケージを作成しました。関数は、表 REZULTAT の各行の後の挿入時にトリガーによって呼び出されます。

関数は挿入された行の列の 1 つを計算することになっており、その入力パラメーターは挿入された行の ID であり、レコード タイプで計算する前にその特定の挿入された行をレコード タイプに選択するために使用しました。

これにより、各行の挿入後に関数が呼び出されたにもかかわらず、テーブルの変更エラーが発生するようです。

これを回避し、その関数に挿入された各行で計算を行うにはどうすればよいですか?

0 投票する
2 に答える
1594 参照

plsql - PL/SQL トリガーで変更テーブル エラーが発生する

私のトリガーは、「新しい」マネージャーが 5 人以下の従業員を監督しているかどうかを確認したいと考えています。BLOCKED_MANAGER テーブル (ssn,numberofemployees) には、5 人だけを監督するマネージャーがいます。最後に、すべての更新は SUPERLOG テーブル (日付、ユーザー、old_manager、new_manager) に記録されます。トリガーに関するコンパイル エラーは発生しませんが、superssn を更新すると次のエラーが発生します。

このトリガーを解決するにはどうすればよいですか? ありがとうございました

0 投票する
2 に答える
175 参照

sql - トリガーとともにプロシージャーを使用する SQL

データベース内のいくつかのテーブルに自動入力するトリガーとプロシージャを作成しようとしています。ユーザーとユーティリティの 2 つのテーブルがあります。

ユーザー テーブル:

ユーティリティ テーブル

今、私は自分のDBで何をしたいですか。

  1. ユーザーが USERS テーブルに INSERTED されると、トリガーが起動されます。
  2. このトリガーは、作成されたユーザーの一連のユーティリティを UTILITIES テーブルに挿入します (User_ID は、作成されたばかりの User_ID と一致します)。
  3. ユーティリティが UTILITIES テーブルに挿入された後、UTILITIES テーブルで SUM(Utility_Cost) を実行し、USER_ID が一致する USERS.Memory_Usage に SUM を保存するプロシージャを実行したいと思います。

私がこれまでに作成したもの:

USERS テーブルの INSERT の後に起動するトリガー:

トリガーから呼び出されるプロシージャ:

ただし、 USERS テーブルに INSERT しようとすると、次のようになります。

なぜこれが起こっているのか誰にも分かりますか?どんな情報でも大歓迎です。ありがとう!

0 投票する
2 に答える
544 参照

oracle - Oracle Trigger - テーブル名が変更されているため、トリガー/関数で認識されない可能性があります

次のシナリオ(簡略化)でOracleデータベースを使用しています:

つまり、3 つのプロジェクト - プロジェクト 1000 には 2 つの異なるパラメーターがあり、2 番目と 3 番目のプロジェクトにはそれぞれ 1 つのパラメーターがあります。

ここで、projects テーブルに Trigger を書き込む必要があります。このトリガーは、指定された SCODE を持つタイプ「4614」のパラメーターの最大値 +1 を持つ新しい行を params テーブルに自動的に挿入します。

...イベントをトリガーする必要があります

今、私には2つの可能性があり、両方とも機能しません:

トリガーが「BEFORE」として宣言されている場合、外部キー制約によってプロジェクト 1003 がまだ作成されていないというエラーが表示されるため、パラメーター テーブルに挿入できません。トリガー内でコミットを行うことはできません。

トリガーが「AFTER」として宣言されている場合、エラーが発生します

現在トリガーされているテーブルにアクセスしているためです。

この問題には何らかの解決策があるはずです。どんな助けでも大歓迎です!

//編集

私のトリガー:

関数 get_next_param_val は、プロジェクト テーブルの選択を行い、正しいパラメーター値を返します。

0 投票する
0 に答える
59 参照

oracle - :new および :old 変数にアクセスするための Oracle での AFTER トリガーの作成

2 つの日付列を持つテーブルで、次の状況がありStart_DTますEnd_DT

新しい行を挿入するときはいつでも、たとえば、次のタプルを挿入したい場合('06-02-2012', '10-02-2012')End_DT時系列の最後の (前の) 行の が、Start_DT挿入しようとしている行の で更新されます。時系列の重複

したがって、最終的に、新しい行を挿入すると、テーブルは次のようになります。

問題は、作成したトリガーでエラーが発生することです。これは、トリガーを作成した方法を理解していますが、目的を達成するためにそれを変更する方法がわかりません。

更新を行うには、前の行にロックSELECT FOR UDPATEをかけるために使用することが必須であると考えました。しかし、このトリガーを に変更すると、テーブルで同じロックを達成できるかどうかわかりません。AFTER

私のトリガーのコードは次のとおりです。

BEFORE トリガーが同じテーブル内のデータを変更できないことをOracle のドキュメント ページでオンラインで見つけました。

そのため、トリガーをタイプに変更することを考えていますが、そうすると、変数と変数AFTERにアクセスできなくなります。:new:old

どんな助けでも大歓迎です。