問題タブ [triggers]

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 投票する
4 に答える
2180 参照

sql - SQL Server トリガーが相互に質問を開始する

何かが更新された時刻と、すべてのテーブルのフィールドで更新されたユーザーを自動的に配置する監査トリガーがあります。更新からのイベント情報をイベント テーブルに書き込むトリガーの別のセットがあります。問題は、誰かが何かを更新すると、最初のトリガーのためにイベント情報が 2 回発生することです。重複したエントリを抑制するにはどうすればよいですか?

0 投票する
4 に答える
7375 参照

sql - DB2 履歴テーブル トリガーの作成

DB2 の多数のテーブルでフィールドの変更を追跡するための履歴テーブルを作成したいと考えています。

履歴は通常、テーブルの構造全体をコピーして接尾辞付きの名前を付けることで行われることを知っています (例: user --> user_history)。次に、非常に単純なトリガーを使用して、UPDATE で古いレコードを履歴テーブルにコピーできます。

ただし、私のアプリケーションでは、これはあまりにも多くのスペースを使用します。フィールドが変更されるたびに、レコード全体を別のテーブルにコピーするのは (少なくとも私には) 良い考えとは思えません。したがって、個々のフィールドの変更を追跡する一般的な「履歴」テーブルを作成できると考えました。

追跡したいすべてのテーブルには、自動生成された単一の id フィールドが主キーとしてあり、これは「record_id」フィールドに入れられます。また、テーブル内の VARCHAR の最大サイズは 1024 です。明らかに、VARCHAR 以外のフィールドが変更された場合は、レコードを履歴テーブルに挿入する前に VARCHAR に変換する必要があります。

さて、これは物事を行うための完全に遅れた方法かもしれません (ねえ、もしそうなら理由を教えてください)。時間の長さ。

とにかく、更新時に履歴テーブルにレコードを追加するトリガーを作成するのに助けが必要です。たとえば、架空のユーザー テーブルを考えてみましょう。

それで、変更を履歴テーブルに挿入するために、ユーザーテーブルの更新時にトリガーを手伝ってくれる人はいますか? 私の推測では、手続き型 SQL を使用して古いレコードのフィールドをループし、それらを新しいレコードのフィールドと比較し、一致しない場合は履歴テーブルに新しいエントリを追加する必要があると思います。

可能であれば、フィールドに関係なく、すべてのテーブルに同じトリガー アクション SQL を使用することをお勧めします。

ありがとう!

0 投票する
7 に答える
138961 参照

sql-server - SQL Server で条件が満たされた場合にのみ起動するトリガー

これが、そこにいるSQLの人々にとって十分に単純な質問であることを願っています...

システム構成データを保持するテーブルがあり、これはトリガーを介して履歴テーブルに関連付けられているため、誰がいつ何を変更したかを追跡できます。

このテーブルに別の値を追加する必要がありますが、これはコードから頻繁に変更されるものであり、その履歴を追跡しないという要件があります (何千もの値でテーブルを詰まらせたくありません)。 1 日あたりの更新。

現在、私たちのトリガーはこのようなものです...

属性列の値に特定の文字列 (「NoHist_」など) がプレフィックスとして付けられている場合に、レコードの作成を停止するロジックを追加できるようにしたいと考えています。

トリガーを扱った経験がほとんどないことを考えると、これを実装するにはどうすればよいか疑問に思っていました...次のようなwhere句を試しました

しかし、うまくいかないようです。値は引き続き履歴テーブルにコピーされます。

あなたが提供できる助けをいただければ幸いです。


OK - Cade Roux が予測したように、これは複数の更新で見事に失敗します。これには新しいアプローチを取らなければなりません。他に何か提案はありますか?


みんな-ここで教えてください...このシナリオでは、LEFT()がLIKEよりも望ましいのはなぜですか? 私は答えを受け入れたことを知っていますが、私自身の教育のために知りたいです.

0 投票する
4 に答える
3046 参照

sql - MS SQL トリガー更新呼び出しデッド ロック?

私は2つのテーブルを持っています。クラブとコーチ。それらの間には 0,1 - 0,1 の関係があります (コーチはゼロまたは 1 つのクラブを持つことができます。クラブはゼロまたは 1 つのコーチを持つことができます)。特定のクラブのコーチを変更したい場合は、クラブ テーブルを更新する必要があります。そのため、そのクラブの idCoach を変更する必要があります。新しいコーチ (指定されたクラブの新しく割り当てられたコーチ) が既に他のクラブのコーチであると考えてみましょう。彼のコーチは別のクラブに割り当てられるため、そのクラブの idCoach フィールドを Null に設定する必要があります。また、コーチを変更したいクラブに既にコーチがいる場合は、そのコーチ (Coach テーブル内) の idClub を Null に設定する必要があります。

上記のすべては、特定のコーチのクラブを変更したい場合にも当てはまります。(特定のコーチの前のクラブの idCoach フィールドを Null に設定し、新しいクラブの idCoach を null に設定する必要があります)。

Club または Coach テーブルに新しいレコードを挿入したり、既存のレコードを削除したりすると、同じ問題が発生する可能性があります (挿入、更新、および削除では、対応する参照に注意してそれらをリンク解除する必要があります)。

これをトリガーで解決したい。Club テーブル (挿入、更新、削除用) に 3 つのトリガーが必要で、Coach テーブルにさらに 3 つのトリガーが必要になると思います。

更新トリガー(クラブなど)では、クラブで更新を再度トリガーするコーチテーブルを更新する必要があり(本体でクラブテーブルを更新する必要があるため)、そのトリガーはコーチとトリガーなどを更新します。だから私はデッドロックを持っています。

これを解決するには?

トリガーを扱うのはこれが初めてです。単純なことをこのように大きく説明して申し訳ありません。

乾杯!

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

sql - SQL アクション キーワード

SQL アクション キーワードは何をしますか? このキーワードをトリガーで使用して、トリガーが Insert、Delete、または Update によって呼び出されたかどうかを判別できますか?

0 投票する
3 に答える
39937 参照

postgresql - postgresql トリガーのデバッグ

私は Postgresql にこのトリガーを持っています。理解するために、私がそれを定義した方法があります:

もう少し面白くするために.. トリガーをどのようにデバッグしますか?

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

sql-server - SQL 2005 トリガー質問

トリガー内からトリガーを起動させたストアド プロシージャの名前を確認できますか?

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

wpf - WPF: ボタンにトリガーを追加する

現在、WPF UI を使用してプログラムをコーディングしています。ページに変更があったかどうかに応じて、閉じるかキャンセルするボタンがあります。これを実現するには、依存関係プロパティ HasChanges が true のときにボタンが「閉じる」から「キャンセル」に変わるように、ボタンでトリガー (スタイルにラップ) を使用したいと考えています。これまでのところ、私のプログラムはボタンのテキストとして「Close」を表示していますが、依存関係プロパティ HasChanges が true になっても何も起こりません。WPF ページは、XAML ではなく VB.Net で記述されています。

これまでのところ、私は持っています:

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

0 投票する
9 に答える
33193 参照

oracle - トリガーを使用しない Oracle での自動インクリメント

トリガーの使用以外にオラクルで自動インクリメントを達成する他の方法は何ですか?

0 投票する
8 に答える
36668 参照

sql - sybase データベース内のテーブルに関連付けられたトリガーをどのように識別しますか?

SQL Advantage を使用しており、テーブルに関連付けられたトリガーを識別するために SQL が何であるかを知る必要があります。別のツールを使用するオプションがないため、古き良き SQL ソリューションが理想的な答えです。