問題タブ [database-trigger]
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.
mysql - MySQL トリガーで NEW 行の値を設定し、同じテーブル内の別の行を更新します
特定のアイテムの料金を追跡するテーブルがあります。これらの料金は時間の経過とともに変化する可能性があるため、2 つの列 (startDate、endDate) を用意し、現在の一連の料金の endDate は常に遠い将来に設定します。入力された新しい行でいくつかの計算を行うために使用するトリガーが既にありますが、既にエントリがある項目を入力した場合、前のエントリの endDate を前日に設定したい新しいエントリの startDate と新しい endDate を、あらかじめ決められたはるか先の日付に変更します。最初に試したコードは次のとおりです。
私が得るエラーは次のとおりです。
mysql - MySQL-挿入後に同じテーブルを更新するためのトリガー
これが私がやろうとしていることです:
INSERT
テーブルに新しいものがある場合、特定の(古い)アカウントが編集されたことを示すように設定して、 where =ACCOUNTS
の行を更新する必要があります。ACCOUNTS
pk
NEW.edit_on
status='E'
要件は、新しく挿入された列を操作することではなく、既存の列を操作することです。pk = NEW.edit_on
ただし、同じテーブルを更新することはできません。Can't update table ACCOUNTS ... already used by the statement that invoked this trigger
回避策を提案してください
PS:同じテーブルで更新した後、トリガーでテーブルを更新し、同じテーブルトリガーmysqlに挿入し、同じテーブルで挿入後トリガーで更新し、テーブルに挿入した後に挿入と更新でmysqlトリガーを実行しましたが、応答しないようです私の質問。
編集
ACCOUNTS
テーブル:
mysql - MySQL でトリガーを無効にする方法は?
私のMySQLデータベースには、いくつかのトリガーON DELETE
とON INSERT
. DROP
場合によっては、いくつかのトリガーを無効にする必要があります。
そして再インストール。SET triggers hostgroup_before_insert = 0
外部キーのようなショートカットはありますか:
EDIT Answer MySQL には組み込みのサーバー システム変数 TRIGGER_CHECKS はありません。
簡単な回避策は、代わりにユーザー定義のセッション変数を使用することです。
sql - ライブテーブルの履歴ビューのデータベーストリガー?
私は、製造プロセス全体でのオブジェクトの動きを追跡するためのデータベースを開発しています。現在、現在処理中のものの「ライブ」テーブルがあります。これには、現在の場所(tLiveTable)も含まれます。
tLiveTable:
PieceIDが新しい場所に移動すると、LocationRefを新しい場所に更新するUPDATEを実行し、GetDate()でタイムスタンプを更新します。
ただし、PieceIDが過去にあった場所の履歴ビューのために、追跡テーブル(tPieceTracking)も作成しました。
tPieceTracking:
InOutの意味:1 =その場所に入った、0=その場所を離れた
私の当初の計画は、PieceIDが移動するたびに手動で新しいレコードをtPieceTrackingに挿入することでした。
私の質問は、SQL 2005 SP3内でデータベーストリガーまたは他の種類のスクリプトを使用して、データベースがこの追跡を自動的に実行できるようにすることはできますか(アプリケーションがそれを実行する責任を負わないようにするため)?
データベーストリガーを調べましたが、最初に遭遇した障害は、MSSQLがBEFORE UPDATEをサポートしていないことです。これは、トリガーする必要があると思います。
どんな助けでもいただければ幸いです。
oracle - Oracle 作成トリガー エラー (不適切なバインド変数)
次のコードでトリガーを作成しようとしています。
エラーが発生しています
何か案は?ありがとう。
database-design - トリガーとビューを使用して現在のデータ ステータスを取得する
私はデータベース設計に不慣れで、プロジェクトのトリガーとビューの選択についてこの質問があります。以下に詳細を示します。
使用データベース:MySQL
各名前は、レベルとステータスのすべての組み合わせを保持できます (必須ではありませんが、可能です)。
例:
名前:「キング」は、レベル1のステータスa、レベル1のステータスb、……、レベル2のステータスa、レベル2のステータスb……、レベル3のステータスa、レベル3、ステータスb……を保持することができます。 ..
ここで、データベースにクエリを実行して、ネットワーク経由で動作する GUI (Java Swing) を介してユーザーに表示するための計算を行う必要があります。必要な計算は...
各名前の各レベルの各ステータスの数。例えば:
キングのレベル1の「ステータスa」の数。キングのレベル1の「ステータスb」の数。キングのレベル1の「ステータスc」の数。キングのレベル1の「ステータスd」の数。キングのレベル 2 の「ステータス a」の数。すぐ....
名前--- レベル--- ステータス
キング--- 1 --- a
キング--- 1 --- a
キング--- 1 --- a
キング--- 1 --- b
キング--- 1 --- b
キング--- 1 --- 日
レベル 2 も同様で、別の名前も同様です。名前「King」のレベル 1 のカウントをしたい
このデータを取得するために個別のクエリを実行すると、20 個の名前がある場合、320 個のクエリを実行する必要があります。私はしたくない。ここには2つの解決策があります...
解決策 1. トリガーを作成しました。
表 2 を作成しました。
元の表 1 が更新されると、それに応じてトリガーがカウントに追加されます。今、私はこの table2 から直接読み取ります。
解決策 2: このデータを表示するビューを作成しました。
名前 -- レベル -- ステータス -- カウント
キング 1 a 3
キング1b2
キング2 ...
後で。
このソリューションを使用すると、常にネットワーク経由ですべてのクエリを送信する必要がなくなります。ビューを一度だけ呼び出すことができます(とにかくすべてのクエリを実行しますが、プログラムから実行する必要はありません)
両方を実装できますが、どちらのソリューションがより効率的かを知りたいです。(フロントエンドを使用して) 各ユーザーの親テーブルに約 2000 行があり、ユーザーは任意の数にすることができます。提案してください。
ありがとう、ラージュ
oracle - SYS が所有するオブジェクトにトリガーを作成できないのはなぜですか?
という名前のトリガーを作成しようとしているときghazal_current_bef_upd_row
:
次のエラーが表示されます。
ghazals_current
およびという名前のテーブルは両方ともghazal_current_audit
によって作成されましたSYS
。によって作成されたテーブルにトリガーを作成できないのはなぜですかSYS
。
oracle - トリガーのループにPL/SQLカーソルを使用するにはどうすればよいですか
こんにちは、私は plsql の初心者です。plsql を使用するのはこれが初めてです
plsqlを使用してトリガーを作成しました。そのトリガーを作成するために使用する構文を次に示します。しかし、「」としてエラーが発生[Err] ORA-24344: success with compilation error
し、どこで間違ったのかわかりません。このトリガーでは、カーソルで for ループを使用します。そのカーソルに何か問題があると思います 誰かが私がどこで間違ったのかを理解するのを手伝ってくれませんか. これには Navicat を使用します。私はこれにほぼ5日間苦労しています:(事前に感謝します