【问题标题】:How can i get name of USER that launched insert query in oracle如何获取在 oracle 中启动插入查询的用户的名称
【发布时间】:2020-03-25 20:27:19
【问题描述】:

所以我的家庭工作是创建一个触发器,该触发器在给定表上的插入查询后启动以更新另一个表..,并读取启动 INSERT 查询的 USER 的名称! 关于如何获取用户名的任何建议?

【问题讨论】:

    标签: oracle session triggers insert


    【解决方案1】:

    例如,如果您想将插入记录到 Scott 的 EMP 表中,您可以这样做:

    (你真的不需要这个;我用它只是为了设置日期格式):

    SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
    
    Session altered.
    

    日志表和触发器:

    SQL> create table log_emp (empno number, who varchar2(30), datum date);
    
    Table created.
    
    SQL> create or replace trigger trg_ai_emp
      2    after insert on emp
      3    for each row
      4  begin
      5    merge into log_emp l
      6      using (select :new.empno empno
      7             from dual
      8            ) x
      9      on (x.empno = l.empno)
     10    when matched then update set
     11      l.who = user,
     12      l.datum = sysdate
     13    when not matched then insert values
     14      (:new.empno, user, sysdate);
     15  end;
     16  /
    
    Trigger created.
    

    测试:

    SQL> insert into emp (empno, ename) values (1, 'Little');
    
    1 row created.
    
    SQL> select * from log_emp;
    
         EMPNO WHO                            DATUM
    ---------- ------------------------------ -------------------
             1 SCOTT                          30.11.2019 18:57:30
    
    SQL>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-18
      • 2023-02-22
      • 2016-07-14
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 2018-08-05
      • 2022-11-23
      相关资源
      最近更新 更多