演示一个触发器

本文介绍了一种使用数据库触发器实现两张表间数据同步的方法。当临时表(contact_tmp_tbl)中插入新数据时,触发器会检查另一张表(contact_tbl)中是否存在相同记录,若存在则更新,否则插入新记录。此方法适用于并发量不高的场景。

触发器的作用:通过往一张临时表插入数据,来更新另外一张表的数据,如果另外一张表存在该数据则更新,如果不存在,则插入到另外一张表。


drop trigger if exists `insertContactTMP`;
DELIMITER ;;
CREATE TRIGGER `insertContactTMP` AFTER INSERT ON `contact_tmp_tbl` FOR EACH ROW BEGIN
SET @x = (select receiver_id from contact_tbl where match_sign=new.match_sign and c_group_id=new.c_group_id);
IF ISNULL(@x) THEN
SET @maxId = (select max(receiver_id) from contact_tbl);
IF ISNULL(@maxId) THEN
SET @maxId=0;
END IF;
SET @x = @maxId + 1;
insert into contact_tbl values(@x,new.c_group_id,new.receiver_code,new.match_sign,new.receiver_name,new.company_name,new.c_telephone,new.mobilephone,new.fax_number1,new.fax_number2,new.fax_number3,new.fax_number4,new.c_email1,new.c_email2,new.c_email3,new.fax_email_flag,new.send_line,new.update_time,new.business,new.business_name,new.trustee);
ELSE
update contact_tbl set receiver_name=new.receiver_name,company_name=new.company_name,c_telephone=new.c_telephone,mobilephone=new.mobilephone,fax_number1=new.fax_number1,fax_number2=new.fax_number2,fax_number3=new.fax_number3,new.fax_number4=new.fax_number4,c_email1=new.c_email1,c_email2=new.c_email2,c_email3=new.c_email3,fax_email_flag=new.fax_email_flag,send_line=new.send_line,update_time=new.update_time,business=new.business,business_name=new.business_name,trustee=new.trustee where receiver_id=@x;
END IF;
END
;;
DELIMITER ;


次触发器是个鸡肋,数据量并发大的时候,不能用,影响效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值