我需要编写一个触发器来查找总编号。基于最近插入日期插入的记录。
在插入之后,我尝试使用语句级别())触发,但它没有给我预期的输出?create or replace trigger trig
after insert on base_table
declare
v_cnt:=0;
begin
select count(*) into v_cnt from base_table where ins_date= ( select max(ins_date) from base_table);
insert into audit_table values(v_cnt,sysdate);
commit;
end;
好吧,你的触发器是无效的(v_cnt
没有数据类型;你不能在触发器中commit
(除非它是一个自治事务)),所以我怀疑它会产生任何结果。是什么预期结果?
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
示例表:
SQL> create table base_table (id number, ins_date date);
Table created.
SQL> create table audit_table (cnt number, datum date);
Table created.
触发:
SQL> create or replace trigger trig
2 after insert on base_table
3 declare
4 v_cnt number := 0;
5 begin
6 select count(*)
7 into v_cnt
8 from base_table
9 where ins_date = (select max(ins_date) from base_table);
10
11 insert into audit_table values (v_cnt, sysdate);
12 end;
13 /
Trigger created.
测试:
SQL> insert into base_table (id, ins_date)
2 select level, sysdate from dual connect by level <= 3;
3 rows created.
SQL> select * From base_table;
ID INS_DATE
---------- ----------
1 21.10.2021
2 21.10.2021
3 21.10.2021
SQL> select * from audit_table;
CNT DATUM
---------- ----------
3 21.10.2021
SQL>
那个看起来对我来说没问题。也许,你想用TRUNC
select max(trunc(ins_date)) from base_table
子查询中,如果ins_date
包含时间分量。