oracle触发器在表中插入新行时更新新的视图行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle触发器在表中插入新行时更新新的视图行相关的知识,希望对你有一定的参考价值。

有人可以帮我在oracle表达式视图x上编写一个触发器,它通过select查询从另一个表y填充数据。

逻辑:在表y中插入新行后;当表y中插入的行上的新列的值为'xyz'时,我想基于插入表y的新行上的条件'xyz'更新表达式视图x的某些列。

有人可以帮忙吗?

钱德拉

答案

这就是我理解这个问题的方式(尽管通过阅读评论而不是“表达视图”使我感到困惑的问题)。

这将是一个基于触发器的解决方案;它检查输入A列的值是否大于100(这是你的“if condition”);如果是这样,它会修改C和D列。如果没有,它什么都不做。

SQL> create table test (a number, b number, c number, d number);

Table created.

SQL> create or replace trigger trg_bi_test
  2    before insert on test
  3    for each row
  4    when (new.a > 100)
  5  begin
  6    :new.c := 3;
  7    :new.d := 4;
  8  end;
  9  /

Trigger created.

SQL> insert into test (a) values (50);

1 row created.

SQL> insert into test (a) values (200);

1 row created.

SQL> select * from test;

         A          B          C          D
---------- ---------- ---------- ----------
        50
       200                     3          4

SQL>

以上是关于oracle触发器在表中插入新行时更新新的视图行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用触发器在同一张表中插入新行(Oracle PL/SQL 10G)?

如何创建一个 Postgres 11 触发器函数,该函数在插入或更新到表“a”时在表“b”中插入一个新行?

Sql 触发器在表更新时添加新行

oracle 表中的新行是不是立即反映在视图中?

SQLServer之创建DML AFTER INSERT触发器

触发器处理表更新