在进行ORACLE移植到MYSQL时,遇到mysql触发器不支持本表操作,没有类似于ORACLE的自治事务pragma autonomous_transaction。
需求:在表A中插入一条数据之前,先删除表A中满足条件的某条数据。
DROP TRIGGER IF EXISTS TR_REPAIR_HIS;
DELIMITER $$
CREATE TRIGGER TR_REPAIR_HIS
BEFORE INSERT ON T_EQU_REPAIR_HIS
-- REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
-- pragma autonomous_transaction;
begin
declare v_count numeric;
select count(*) into v_count from t_equ_repair_his where c_equid=NEW.c_equid and c_station_no=NEW.c_station_no and c_set_date=NEW.c_set_date;
if (v_count > 0) then
delete from t_equ_repair_his where c_equid=NEW.c_equid and c_station_no=NEW.c_station_no and c_set_date=NEW.c_set_date;
-- commit;
end if;
end$$
DELIMITER ;
以上触发器能在Mysql中创建成功,但使用时,若插入相同数据触发了该触发器,达不到先删除原数据再插入的目的,且报错。操作如图:
有没有解决办法。
REPLACE INTO