2016-03-20 10 views
0

Dears更新がoracleデータベース・ユーザーかデータベースの外部アプリケーションかを確認してください

私はChangeBYという名前の列を更新するOracle Triggerを持っています。

ユーザーがデータベース内のレコードを更新し、そのユーザー名をChangeBY列に配置すると、このトリガーが発生します。

更新は両側から行われます。更新はデータベースユーザーから直接行うことも、自分のデータベースに接続された外部アプリケーションから行うこともできます。

アップデートはどこからチェックできますか?データベースのユーザーまたはアプリケーションからですか?

接続されたアプリケーションがChangeBY列を自動的に変更するため、値の更新がデータベースユーザーのみから行われた場合にのみ、コードを実行するための条件をトリガー内に配置します。

これは可能ですか?

ありがとう、

答えて

0

私はデータベースユーザーとアプリケーションユーザーについて混乱しています。接続する可能性のあるアプリケーションは、内部的に更新のためだけにデータベースユーザーを使用するためです。現在ログインしているユーザを確認して、 の更新を試みることができます。 あなたはURアプリケーションのユーザーについて、lilビットを説明できるかもしれません。

+0

私が使用しているアプリケーションはmaximoです。ユーザーがシステム内で行った変更を最大限にログインすると、changebyカラムはログインしたmaximoユーザーによって更新されます。実際には、トリガーを追加した後、システム(Maximo)からの変更があった場合、changeby列はmaximoユーザーではなくデータベースをオープンしているユーザーによって更新されます。このため、私はトリガーに条件を追加して、Maximoまたはデータベース(Toad)から直接更新するユーザーからの変更があるかどうかを確認したいと考えています – Darwish

+0

この場合、更新を行うクライアントを確認することができます起こっている。つまり、更新プログラムが、おとぎ話のようなクライアントから実行された場合、SQL Developerは簡単に追跡できます。 V $ SESSIONはそれを追跡するために使用できます。お役に立てれば。 –

+0

データベースに関する限り、違いはありません。ユーザはユーザであり、ユーザである。いくつかのユーザーアカウントを使用して接続されたセッション。ストアドプロシージャであっても、それはいくつかの使用アカウントによって所有されています。それを超えて、私はあなたが探しているものは、sys_contextを問い合わせることによって見つけることができると思います。私は、学生がOracleのドキュメントで参照を参照するための練習として残します。 – EdStevens

関連する問題