Oracle 通过触发器记录班次任务单状态

-- Create table
create table CUXSHIFTORDERSTATUS_LOG
(
CUXGUID VARCHAR2(50), --唯一编码
CUXSHIFTORDER VARCHAR2(50),--班次任务单
CUXOLDSTATUS VARCHAR2(50),--班次任务单修改前状态
CUXNEWSTATUS VARCHAR2(50),--班次任务单修改后状态
CUXOLDUPDATEUSER VARCHAR2(50),--原修改人
CUXNEWUPDATEUSER VARCHAR2(50),--现修改人
CUXOLDUPDATETIME DATE, --原修改时间
CUXNEWUPDATETIME DATE, --现修改时间
CUXOLDTASKRECEIVER VARCHAR2(50),--原任务接收人
CUXNEWTASKRECEIVER VARCHAR2(50),--原任务接收人
CUXOLDTASKRECEIVETIME DATE,--原任务接收时间
CUXNEWTASKRECEIVETIME DATE,--现任务接收时间

CUXCreateTime_LOG date,--日志创建时间
CUXCreateBy_LOG VARCHAR2(50)--日志创建人

)
tablespace TSINSITE
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);


--创建触发器
create or replace trigger TR_SHIFTORDERSTATUS_LOG_UPDATE
before update on cux_containerdetail
for each row

begin

if :old.cux_workstatus <> :new.cux_workstatus then
insert into CUXSHIFTORDERSTATUS_LOG
(
CUXGUID ,
CUXSHIFTORDER ,
CUXOLDSTATUS ,
CUXNEWSTATUS ,
CUXOLDUPDATEUSER ,
CUXNEWUPDATEUSER ,
CUXOLDUPDATETIME ,
CUXNEWUPDATETIME ,
CUXOLDTASKRECEIVER ,
CUXNEWTASKRECEIVER ,
CUXOLDTASKRECEIVETIME ,
CUXNEWTASKRECEIVETIME ,
CUXCreateTime_LOG ,
CUXCreateBy_LOG
)
values
(
SYS_GUID()
,:old.containerid
,:old.cux_workstatus
,:new.cux_workstatus
,:old.updateuser
,:new.updateuser
,:old.updatetime
,:new.updatetime
,:old.cuxtaskreceiver
,:new.cuxtaskreceiver
,:old.cuxtaskreceivetime
,:new.cuxtaskreceivetime
,sysdate
,'System'
);
end if;
end;

原文地址:https://www.cnblogs.com/xiong950413/p/13130401.html