pre_ucenter_members会员表
pre_common_member_count积分表
在不修改两者代码的基础上,我想到了mysql的触发器.使用触发器的功能不就可以解决了吗?但是后来想了想总觉得有点死循环的意思.dede的修改触发discuz的积分,反正得触发器不是又返回来触发dede了吗?这不是个死循环吗?要我mysql的触发器我可以说是第一次使用.死马当活马医.在本机见了一个测试数据库.试试吧.不试试怎么知道呢?
表 1
bbs_members(论坛用户表)
字段
uid(用户id),extcredits1(积分),extcredits2(金钱)
表 2
dede_member
字段
mid(用户id),scores(积分),money(金钱) 经过一顿调整,原本以为需要4个字段写4个触发器的.只写了2个触发器就解决了.不知道为什么.触发器不是针对字段的吗?怎么针对记录了?我不是很明白,如果你知道,可以告诉我.我保持学习的态度.
废话不说了,放出触发器的代码吧.
CREATE TRIGGER tr_bbs_dede AFTER update ON bbs_members
FOR EACH ROW
BEGIN
set @scores='0';
set @money='0';
select scores,money into @scores,@money from dede_member where mid=NEW.uid;
if @scores!=NEW.extcredits1 then
update dede_member set scores=NEW.extcredits1 where mid=NEW.uid;
end if;
if @money!=NEW.extcredits2 then
update dede_member set money=NEW.extcredits2 where mid=NEW.uid;
end if;
END;
CREATE TRIGGER te_dede_bbs AFTER UPDATE ON dede_member
FOR EACH ROW
BEGIN
set @extcredits1='0';
set @extcredits2='0';
select extcredits1,extcredits2 into @extcredits1,@extcredits2 from bbs_members where uid=NEW.mid;
if @extcredits1!=NEW.scores then
update bbs_members set extcredits1=NEW.scores where uid=NEW.mid;
end if;
if @extcredits2!=NEW.money then
update bbs_members set extcredits2=NEW.money where uid=NEW.mid;
end if;
END;
触发器建立后,发现能够实现同步了.不过此方法建议整合开始,双方积分都为0的时候.呵呵.