我正在单个事务中对表执行插入和删除操作。我在此表上触发了更新日志。日志的主键为 sequenceId,在插入时总是递增。我先删除然后插入事务.
我有两个问题:
- 插入和删除的日志中的时间戳是相同的。我可以强迫它不同吗?
- 日志中的操作顺序(插入/删除)正在颠倒。它显示了插入操作之后的删除操作(根据 sequenceId)。如何确保日志中的顺序一致(删除后插入)。
例子 :
create table address (ID number, COUNTRY char(2));
create table address_log(SEQ_ID number, ID number, COUNTRY char(2), DML_TYPE char(1), CHANGE_DATE timestamp(6));
create sequence seq_id start with 1 increment by 100 nominvalue nomaxvalue cache 20 noorder;
create or replace trigger trg_add
before insert or delete on address
FOR EACH ROW
BEGIN
if inserting then
insert into address_log values(SEQ_ID.nextval, :new.ID, :new.COUNTRY, 'I', sysdate);
else
insert into address_log values(SEQ_ID.nextval, :old.ID, :old.COUNTRY, 'D', sysdate);
end if;
end;
insert into address values(1,'US');
insert into address values(2,'CA');
delete from address where id = 1;
insert into address values(3,'UK');
delete from address where id = 3;
如果我在单个事务中提交最后一个 DML 查询,那么我应该在 address_log 中看到相同的顺序。