mysql同步并联两张表_Mysql同一主机两张表结构相同的表数据同步-----触发器

本文介绍了如何使用MySQL触发器实现两张结构相同表的数据同步。通过创建INSERT、UPDATE和DELETE触发器,确保BI_AppointmentOrder表的增、改、删操作会实时反映到BI_AppointmentOrder_2018表中,实现数据的一致性。
摘要由CSDN通过智能技术生成

1、执行过程:1)、################################插入

DELIMITER//

CREATE TRIGGER `insert_BI_AppointmentOrder_trigger` AFTER insert ON `BI_AppointmentOrder` FOR EACH ROW BEGIN

--检查当前 环境,避免递归.

IF @disable_insert_trigger_o IS NULL THEN

--设置禁用触发器标志.

SET @disable_insert_trigger_o = 1;--插入目标表

INSERT BI_AppointmentOrder_2018 VALUES(new.`Id`, new.`MapOrderId`, new.`UniquenessCode`, new.`DutySourceId`, new.`HospitalId`, new.`DepartmentId`, new.`DoctorId`, new.`UserId`, new.`PatientId`, new.`DutySourceSequenceId`, new.`PatientIdNo`, new.`PatientName`, new.`DutyDate`, new.`MobileNo`, new.`SubmitChannelId`, new.`CancelChannelId`, new.`Status`, new.`ErrorStatus`, new.`AgentId`, new.`CancelAgentId`, new.`OrderCancelType`, new.`SubmitIp`, new.`CancelIp`, new.`MedicalInsurance`, new.`OrderCode`, new.`RecognitionCode`, new.`CancelTime`, new.`OfferTime`, new.`ReplaceWay`, new.`OfferAddress`, new.`MedicalRecordId`, new.`HospitalCardId`, new.`MedicareCardId`, new.`ReimbursementCategoryId`, new.`SmsVerifyCode`, new.`IsFirstTime`, new.`HasPowerHospitalCard`, new.`ChildrenName`, new.`ChildrenBirthday`, new.`ChildrenGender`, new.`ChildrenIdNo`, new.`KinshipName`, new.`JytCardId`, new.`CreateTime`);END IF;--恢复禁用触发器标志.

SET @disable_insert_trigger_o = NULL;END;//DELIMITER ;2)、#############################更新

DELIMITER//

CREATE TRIGGER `update_BI_AppointmentOrder_trigger` AFTER UPDATE ON `BI_AppointmentOrder` FOR EACH ROW BEGIN

--检查当前 环境,避免递归.

IF @disable_update_trigger_o IS NULL THEN

--设置禁用触发器标志.

SET @disable_update_trigger_o = 1;--更新目标表

UPDATE BI_AppointmentOrder_2018 SET `MapOrderId`=new.`MapOrderId`, `UniquenessCode`=new.`UniquenessCode`, `DutySourceId`=new.`DutySourceId`, `HospitalId`=new.`HospitalId`, `DepartmentId`=new.`DepartmentId`, `DoctorId`= new.`DoctorId`, `UserId`=new.`UserId`, `PatientId`=new.`PatientId`, `DutySourceSequenceId`=new.`DutySourceSequenceId`, `PatientIdNo`=new.`PatientIdNo`, `PatientName`=new.`PatientName`, `DutyDate`=new.`DutyDate`, `MobileNo`=new.`MobileNo`, `SubmitChannelId`=new.`SubmitChannelId`, `CancelChannelId`=new.`CancelChannelId`, `Status`=new.`Status`, `ErrorStatus`=new.`ErrorStatus`, `AgentId`=new.`AgentId`, `CancelAgentId`=new.`CancelAgentId`, `OrderCancelType`=new.`OrderCancelType`, `SubmitIp`=new.`SubmitIp`, `CancelIp`=new.`CancelIp`, `MedicalInsurance`=new.`MedicalInsurance`, `OrderCode`= new.`OrderCode`, `RecognitionCode`=new.`RecognitionCode`, `CancelTime`=new.`CancelTime`, `OfferTime`=new.`OfferTime`, `ReplaceWay`=new.`ReplaceWay`, `OfferAddress`=new.`OfferAddress`, `MedicalRecordId`=new.`MedicalRecordId`, `HospitalCardId`=new.`HospitalCardId`, `MedicareCardId`=new.`MedicareCardId`, `ReimbursementCategoryId`=new.`ReimbursementCategoryId`, `SmsVerifyCode`=new.`SmsVerifyCode`, `IsFirstTime`=new.`IsFirstTime`, `HasPowerHospitalCard`=new.`HasPowerHospitalCard`, `ChildrenName`=new.`ChildrenName`, `ChildrenBirthday`=new.`ChildrenBirthday`, `ChildrenGender`=new.`ChildrenGender`, `ChildrenIdNo`=new.`ChildrenIdNo`, `KinshipName`=new.`KinshipName`, `JytCardId`=new.`JytCardId`, `CreateTime`=new.`CreateTime` WHERE Id =old.Id ;END IF;--恢复禁用触发器标志.

SET @disable_update_trigger_o = NULL;END;//DELIMITER ;3)、#######################################删除

DELIMITER//

CREATE TRIGGER`delete_BI_AppointmentOrder_trigger`

AFTERDELETE ON `BI_AppointmentOrder` FOR EACH ROW begin

--检查当前 环境,避免递归.

IF @disable_delete_trigger_o IS NULL THEN

--设置禁用触发器标志.

SET @disable_delete_trigger_o = 1;--删除目标表

DELETE FROM BI_AppointmentOrder_2018 WHERE Id =old.Id ;END IF;--恢复禁用触发器标志.

SET @disable_delete_trigger_o = NULL;END;//DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值