2016-04-05 5 views
0

私はサーブレットとJDBCを使用してユーザーを作成する単純なアプリケーションを作成しています。新しいOracleユーザーを作成中に別の表にユーザー名を追加する

は、Oracleユーザーが使用して作成されたとき、私は別のテーブルにユーザー名を挿入するためにトリガーを使用することができます方法はあります:

create user xyz ...... 

このクエリが正常に実行したら、それはDBA_USERSテーブルにユーザー情報を挿入します。

他のテーブルにもユーザー名を挿入します。私はそれを他のテーブルにJDBCを使って手動で追加するべきですか、それとも自動的に行うためのトリガーを作成できますか?

答えて

2

あなたがいないdba_usersビュー上のDMLトリガーcreate user DDLに基づいてa system trigger(しかしを使用することができます - あなたはとにかくそれを行うことはできませんが、それでもデータ辞書に基づいて何かをしようとしてについて考えていません)。しかし、作成しているユーザーが実際にアプリケーションユーザーであるかどうかを知る方法はありません。のみがアプリケーションに関連している可能性があります。

ロールや特権の付与、他のアプリケーションセキュリティデータの追加など、他の手順をとる必要があるため、手動でテーブルを挿入する方が適切でしょう。

すべてのユーザー作成コードをストアドプロシージャ(おそらくパッケージ化されたプロシージャ)に入れて、それをJDBC経由で呼び出すだけでも意味があります。その欠点は、create userとその他のDDLを動的SQLとしてプロシージャ内から実行する必要があることです。あなた自身のテーブルの挿入物は一緒になりますが、作成するJDBC呼び出しは1つだけです。

ユーザーを変更したり削除したりするための他の手順もあります。

DDLが暗黙のうちにコミットすることに注意してください。必ずしも問題ではなく、意識しておく必要があるので、復旧可能な方法で手順を注文することができます。

+0

ありがとうございました:明確なアイデアを与えました –

関連する問題