mysql数据库中同步两个表中的数据的问题

问问大家假如我在数据库database中有两个表分别是players和usersplayers里有一列为playername一列为ipadressusers表里两列分别是... 问问大家 假如我在数据库database中有两个表 分别是players 和users players里有一列为playername 一列为ipadress users表里两列分别是username 和ip
实际上playername和username里的数据是相同的 但出于技术原因,users表中的ip地址为空,让playername表中每一行playername对应users表中的usersname 并将ipadress全部写入对应的ip中 这样如何搞定?最好不只是能处理当前录入的数据 而是让以后ipadress里写入数据的时候ip里会同步数据
展开
 我来答
来学习的DBA
推荐于2016-10-19 · TA获得超过298个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:211万
展开全部
写个存储过程,方便以后调用,下面是手动写的不对的地方自己改改;
写得累死了,还加了注释 不加分 天理难容 累觉不爱

create or replace procedure publish_users is

cursor c_record_players is
select * from players;

v_cur c_record_players%rowtype;
v_db players%rowtype;

begin
--打开游标,处理结果集
open c_record_players;
loop
fetch c_record_players
into v_cur;
exit when c_record_players %notfound;
--如果是刚开始 users表是空的就插入数据
begin
select count(*)
into v_record_num
from users t
where t.id = v_cur.id;

if v_record_num = 0 then
insert into users
( Ip ,
username)
values
( v_cur.ipadress ,
v_cur.playername
);

else
--方便以后处理如果users不是空的那么就更新数据
update users
set ip = v_cur.ipadress ,
username = v_cur.playername ,
where username = v_cur.playername;

end if;
--数据量大的话 每5000条提交一次
if mod(c_record_players%rowcount,5000) = 0 then
commit;
end if;

end loop;
close c_record_players;
end publish_users;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式