【问题标题】:Add username into another table while creating a new Oracle user在创建新的 Oracle 用户时将用户名添加到另一个表中
【发布时间】:2016-04-06 01:12:13
【问题描述】:

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

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

create user xyz ...... 

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

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

【问题讨论】:

    标签: oracle oracle11g triggers


    【解决方案1】:

    您可以基于create user DDL 使用a system trigger(但不是dba_users 视图上的 DML 触发器 - 无论如何您都不能这样做,但不要想关于尝试根据数据字典做任何事情)。但是您实际上无法知道所创建的用户是否实际上是应用程序用户 - 您会假设添加到数据库中的任何用户与您的应用程序相关。

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

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

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

    要记住的一点是,无论你怎么做,DDL 都会隐式提交。不一定是问题,只是需要注意的事情,因此您可以以可恢复的方式对步骤进行排序。

    【讨论】:

      猜你喜欢
      • 2021-02-26
      • 2021-12-03
      • 1970-01-01
      • 2017-09-06
      • 2022-08-18
      • 1970-01-01
      • 2020-07-16
      • 2019-01-04
      • 2014-10-21
      相关资源
      最近更新 更多