sql - 在 SQL 查询中插入日志语句

标签 sql oracle logging plsql

下面的查询将插入两行,即 999,666,Oracle 将为您提供插入 2 行的日志。

  insert into departments(department_id, department_name, manager_id,location_id)

            select 999,'Administration',200,1700 from dual
union all   select 666,'Marketing'     ,201,1800 from dual

我如何获取像“第999行和666行已插入”这样的日志..通过将日志语句放入查询本身..(用户定义的日志)..就像在java中我们使用log4j对于相同的..

最佳答案

如果您不想修改用于插入的代码,您可以在表上定义一个触发器来记录您的操作。

例如:

create or replace trigger departmentsAfterInsert
after insert
on departments
for each row
begin
    dbms_output.put_line('Inserted department ' || :new.department_id);
end;

这将记录插入操作,无论您如何执行:

SQL> insert into departments(department_id, department_name, manager_id,location_id)
  2              select 999,'Administration',200,1700 from dual
  3  union all   select 666,'Marketing'     ,201,1800 from dual;
Inserted department 999
Inserted department 666

2 rows created.

关于sql - 在 SQL 查询中插入日志语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41118666/

相关文章:

在 Varchar 列上使用 IsNumeric 出现 SQL 语法错误

mysql - 有没有办法使用@GeneratedValue 使其同时适用于序列和自动递增?

c# - 对数据库更改执行 .NET 操作

oracle - 使用Toad在Oracle中创建 View 时,如何存储格式化的脚本?

mysql - SQL获取用户访问次数最多的时间

SQL Server 从另一个表创建临时表

angularjs - 装饰 Angular 的 $log 以使用使用 $http 的服务

c# - 将值传递给 NLog 自定义 LayoutRenderer

c++ - boost 记录器,多个日志文件和记录器

Mysql从两个表中选择进行比较