如何获取在oracle中启动insert查询的用户的姓名

如何获取在oracle中启动insert查询的用户的姓名,oracle,session,triggers,insert,Oracle,Session,Triggers,Insert,因此,我的主要工作是创建一个触发器,该触发器在给定表上的插入查询之后启动,以更新另一个表,并读取启动插入查询的用户的名称! 关于如何获取用户名的任何建议?例如,如果您想将插入记录到Scott的EMP表中,您可以这样做: (您并不真的需要这个;我只是用它来设置日期格式): 日志表和触发器: SQL> create table log_emp (empno number, who varchar2(30), datum date); Table created. SQL> creat

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

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

(您并不真的需要这个;我只是用它来设置日期格式):

日志表和触发器:

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>
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>