Dears更新がoracleデータベース・ユーザーかデータベースの外部アプリケーションかを確認してください
私はChangeBYという名前の列を更新するOracle Triggerを持っています。
ユーザーがデータベース内のレコードを更新し、そのユーザー名をChangeBY列に配置すると、このトリガーが発生します。
更新は両側から行われます。更新はデータベースユーザーから直接行うことも、自分のデータベースに接続された外部アプリケーションから行うこともできます。
アップデートはどこからチェックできますか?データベースのユーザーまたはアプリケーションからですか?
接続されたアプリケーションがChangeBY列を自動的に変更するため、値の更新がデータベースユーザーのみから行われた場合にのみ、コードを実行するための条件をトリガー内に配置します。
これは可能ですか?
ありがとう、
私が使用しているアプリケーションはmaximoです。ユーザーがシステム内で行った変更を最大限にログインすると、changebyカラムはログインしたmaximoユーザーによって更新されます。実際には、トリガーを追加した後、システム(Maximo)からの変更があった場合、changeby列はmaximoユーザーではなくデータベースをオープンしているユーザーによって更新されます。このため、私はトリガーに条件を追加して、Maximoまたはデータベース(Toad)から直接更新するユーザーからの変更があるかどうかを確認したいと考えています – Darwish
この場合、更新を行うクライアントを確認することができます起こっている。つまり、更新プログラムが、おとぎ話のようなクライアントから実行された場合、SQL Developerは簡単に追跡できます。 V $ SESSIONはそれを追跡するために使用できます。お役に立てれば。 –
データベースに関する限り、違いはありません。ユーザはユーザであり、ユーザである。いくつかのユーザーアカウントを使用して接続されたセッション。ストアドプロシージャであっても、それはいくつかの使用アカウントによって所有されています。それを超えて、私はあなたが探しているものは、sys_contextを問い合わせることによって見つけることができると思います。私は、学生がOracleのドキュメントで参照を参照するための練習として残します。 – EdStevens