在创建新的Oracle用户时将用户名添加到另一个表中

时间:2016-04-05 16:46:24

标签: oracle oracle11g triggers

我正在创建一个简单的应用程序,我使用Servlet和JDBC来创建用户。

在使用以下命令创建Oracle用户时,有什么方法可以使用触发器将用户名插入另一个表中:

create user xyz ...... 

成功执行此查询后,它会在DBA_USERS表中插入用户信息。

我希望用户名也可以插入到另一个表中。我应该通过JDBC手动将其添加到另一个表中,还是可以创建触发器来自动执行?

1 个答案:

答案 0 :(得分:2)

您可以根据create user DDL使用a system trigger(但 dba_users视图上的DML触发器 - 无论如何都不能这样做,但是,甚至不要考虑根据数据字典做任何事情。但是你真的没办法知道创建的用户是否真的是一个应用程序用户 - 你假设添加到数据库的任何用户只能 与你的应用程序相关。

由于您还必须采取其他步骤 - 例如授予角色和/或权限,可能添加其他应用程序安全数据等,手动执行表插入可能更有意义。

将所有用户创建代码放入存储的(可能是打包的)过程中,甚至通过JDBC调用它可能更有意义;其缺点是create user和任何其他DDL需要在过程中作为动态SQL执行。您自己的任何表插入都可以在一起,并且您只需要进行一次JDBC调用。

您还可以使用其他程序修改和删除用户。

要记住的是,无论你这样做,DDL都会隐式提交。不一定是问题,只需要注意一些事情,这样你就可以以可恢复的方式订购这些步骤。

相关问题