問題タブ [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 投票する
7 に答える
95117 参照

mysql - MySQLトリガーでテーブルの更新を妨げるエラーをスローします

テーブルの更新前にトリガーがある場合、そのテーブルの更新を妨げるエラーをスローするにはどうすればよいですか?

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

sql - タイマーベースのイベント トリガー

私は現在、特定の要件を持つプロジェクトに取り組んでいます。これらの概要は次のとおりです。

  • データは外部 Web サービスから取得されます
  • データは SQL 2005 に格納されます
  • データは Web GUI を介して操作されます
  • Web サービスと通信する Windows サービスは、データベース経由を除いて、内部 Web UI と結合していません。
  • Web サービスとの通信は、時間ベースである必要があり、Web UI でのユーザーの介入によってトリガーされる必要があります。

Web サービス通信トリガーの現在の (本番前の) モデルは、手動の介入から生成されたトリガー要求を格納するデータベース テーブルを介して行われます。複数のトリガー メカニズムは必要ありませんが、呼び出しの時間に基づいてデータベース テーブルにトリガーを入力できるようにしたいと考えています。私が見ているように、これを達成するには2つの方法があります。

1) トリガー テーブルを調整して、2 つの追加パラメーターを格納します。1つは「これは時間ベースですか、それとも手動で追加されますか?」タイミングの詳細を格納するための null 許容フィールド (正確な形式は未定)。手動で作成されたトリガーの場合は、トリガーが起動されたときに処理済みとしてマークしますが、時限トリガーの場合はマークしません。
または
2) 時間間隔でオンザフライでトリガーを作成する 2 番目の Windows サービスを作成します。

2 番目のオプションは私にはごまかしのように思えますが、オプション 1 の管理は簡単にプログラミングの悪夢に変わる可能性があります (テーブルの最後のポーリングが発生する必要のあるイベントを返したかどうかをどのように確認し、それをどのように停止するか)次のポーリングで再トリガー)

どちらのルート (これら 2 つのうちの 1 つ、または場合によってはリストにない 3 つ目のルート) を選択するかを決定するために、誰かが数分の時間を割いてくれれば幸いです。

0 投票する
11 に答える
4346 参照

sql - 監査システムの構築; SQL Server バックエンド上の MS Access フロントエンド

したがって、基本的に私は会社用のアプリを構築しています.MS Accessを使用して構築する必要があり、SQL Serverで構築する必要があります.

私はほとんどの計画を作成しましたが、監査システムを処理する方法を理解するのに苦労しています.

内部でのみ使用されており、建物の外からデータベースにアクセスすることさえできないため、ユーザーが Active 経由で内部ネットワークにログインした後にのみプログラムが使用されるため、ログイン システムは使用していません。ディレクトリ。これを認識して、システムを使用して Active Directory ユーザーの名前を自動的に検出し、DB テーブルの 1 つのアクセス許可を使用して、ユーザーができることとできないことを決定します。

したがって、実際の監査テーブルには 3 つの列があります (この設計は変更される可能性がありますが、この質問では問題になりません)。誰が(Active Directoryユーザー)、いつ(追加・削除・編集時)、何を(何を変更したか)

私の質問は、これをどのように処理する必要があるかです。理想的には、トリガーを使用して、監査がログに記録されずにデータベースが更新されないようにする必要があることを知っていますが、その方法で Active Directory ユーザーを取得する方法がわかりません。別の方法として、Access ソースに直接コーディングして、何かが変更されるたびに INSERT ステートメントを実行することもできます。Access に何かが起こった場合、またはデータベースが他の何かに触れられた場合、監査がログに記録されないため、明らかに欠陥があります。

私を助けるかもしれないアドバイス、例、または記事は大歓迎です!

0 投票する
12 に答える
5807 参照

sql-server - データベース トリガー

これまで、私はデータベース テーブルでトリガーを使用するのが好きではありませんでした。私にとって、それらは常に、アプリケーション コードの制御から遠く離れたデータベース側で発生する「魔法」を表していました。また、DB は一般に共有リソースであり、高負荷のシナリオではトリガーが高価になる可能性があると常に想定していたため、DB が実行しなければならない作業量を制限したいと考えていました。

そうは言っても、トリガーを使用するのが理にかなっている例をいくつか見つけました (少なくとも私の意見では、トリガーは理にかなっています)。しかし最近、トリガーを「バイパス」する必要がある場合があることに気付きました。これを行う方法を探さなければならないことに本当に罪悪感を覚えましたが、データベースの設計を改善すれば、このバイパスの必要性が軽減されると今でも思っています。残念ながら、この DB は複数のアプリケーションで使用されており、そのうちのいくつかは、スキーマの変更について大声で叫ぶ非常に非協力的な開発チームによって維持されているため、行き詰まりました。

トリガーに関する一般的な意見は何ですか? 好きですか?嫌いですか?いくつかのシナリオで目的を果たすと思いますか? トリガーをバイパスする必要があるということは、「やり方が間違っている」ことを意味すると思いますか?

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

sql-server - トランザクションなしでトリガーしますか?

トランザクションに含まれないトリガーを作成することはできますか?

トリガーを使用してリンク サーバー上のデータを更新したいのですが、ファイアウォールの問題により、2 つのサーバー間で分散トランザクションを作成できません。

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

oracle - PLS-00306 (引数の数またはタイプが間違っています) カーソルへの呼び出し

ここで何かが欠けているのではないかと思います。トリガーの関連部分は次のとおりです。

そして、これが私が戻ってきたエラーメッセージです。

ドキュメントを正しく理解している場合はうまくいくはずですが、そうではないので、何か間違ったことをしているに違いありません。何か案は?


@ Matthew - 私は助けに感謝しますが、私が混乱している理由は、このコードがうまく機能せず、参照されているエラーが発生しているためです。データベースには他のトリガーがあり、コードはほぼ同じなので、それが私が間違っていたのか、トリガーを保存しようとしている方法などにあるのかはわかりません.


@ Matthew - さて、私は恥ずかしい思いをするようになりました。あなたが提供したコードをコピーして新しいトリガーに貼り付けたところ、うまくいきました。そこで、元のトリガーに戻って試してみたところ、エラー メッセージが再び表示されました。ただし、今回はトリガーから何かを削除し始め、この行を削除した後、

物事はうまく保存されました。つまり、エラーがあると思っていた場所が、実際にはエラーではないことがわかりました。

0 投票する
6 に答える
49882 参照

sql-server - SQL Server でトリガーの定義 (本体) を取得するにはどうすればよいですか?

私のニーズを満たす SQL diff ツールが見つからないため、独自のツールを作成しています。INFORMATION_SCHEMA テーブルと sys テーブルの間に、ほぼ完全な作業バージョンがあります。しかし、メタデータで見つからないものの 1 つは、トリガーの定義です。つまり、実際の SQL コードです。私は何かを見落としていますか?

ありがとう。


ありがとう、ピート、私はそれについて知りませんでした!

スコット、私は DB へのリモート接続を許可しない非常に基本的なホスティング パッケージを使用しています。RedGate の仕様 (とにかく余裕がありません) から、それらがその回避策を提供しているかどうかはわかりません。API も存在しますが (Apex のものなど)、私は見ませんでした私の側でより多くのプログラミングを必要とするソリューションに投資するポイント。:)

私の解決策は、一種の「スキーマ サービス」として機能する ASPX ページをサイトにドロップし、収集したメタデータを XML として返すことです。任意の数のカタログ インスタンスをマスターと比較し、差分を表示する小さな AJAX アプリをセットアップしました。完璧ではありませんが、私にとって大きな前進です。

再度、感謝します!

0 投票する
6 に答える
140762 参照

mysql - MySQL データベース内のすべてのトリガーをどのように一覧表示しますか?

MySQL データベース内のすべてのトリガーを一覧表示するコマンドは何ですか?

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

mysql - MySQL トリガーの設定

トリガーについて聞いたことがありますが、いくつか質問があります。
トリガーとは
設定方法を教えてください。
典型的な SQL 以外に、取るべき予防策はありますか?

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

mysql - MySQL トリガー & ストアド プロシージャ レプリケーション

わかりました、単一のマスターと多数のスレーブでセットアップを実行しています。すべての書き込みはマスターを経由し、厳密に読み取り専用に使用されるスレーブに複製されます。

これで、挿入のトリガーによって呼び出されるストアド プロシージャ (関数ではない) ができました。MySQLのドキュメントによると、レプリケーショントリガーはトリガーへの呼び出しをログに記録し、ストアドプロシージャは実際にストアドプロシージャの結果をログに記録します。

私の質問は、トリガーが起動されたときに、トリガーとトリガーが呼び出すプロシージャの結果の両方を複製するかどうかです (その結果、プロシージャが実質的に 2 回実行されます)。それとも、単にトリガーを複製して、スレーブにストアド プロシージャを独自に再実行させるのでしょうか?

ありがとう