即使没有插入一个默认值,Oracle也会触发Oracle触发器以“查看”该列中的某些默认值吗?意思是,如果:old用于更新,而:new用于插入,在这种情况下,尽管我只想更新(:old)记录,但我需要“欺骗”触发器以相信已插入某些内容(:new)。
Oracle版本太新了,甚至欢迎异国情调的想法。如果需要达到此目的,它也可以是不同机制的组合。
不那么异国情调; user_tab_columns
是您可能正在使用的。
SQL> create table car
2 (name varchar2(20),
3 color varchar2(10) default 'RED');
Table created.
SQL> select data_default
2 from user_tab_columns
3 where table_name = 'CAR'
4 and column_name = 'COLOR';
DATA_DEFAULT
--------------------------------------------------------
'RED'
SQL> create or replace trigger trg_biu_car
2 before insert or update on car
3 for each row
4 declare
5 l_def_color car.color%type;
6 begin
7 select data_default
8 into l_def_color
9 from user_tab_columns
10 where table_name = 'CAR'
11 and column_name = 'COLOR';
12
13 -- your code now goes here
14 end;
15 /
Trigger created.
SQL>