我这里有一些奇怪的情况,我不能改变数据库结构,所以请不要提及这一点。
我有两个表,名为users和forum_users。“用户”表有两行: user_id (主),用户名。'forum_users‘表有三行: id (主)、forum_user_id、forum_username。
假设我们有一个user_id为'23‘的用户。这个用户已经自动添加到forum_users表中,id为'1',forum_user_id为'23',以及一个随机的forum_username。我想要完成的是,我希望'forum_username‘数据更新为'user_id’等于‘user_id_user_id’的条目中的‘用户名’数据。
我该怎么做才能做到这一点?这能否仅通过MySQL完成而不使用任何类型的外部脚本?如果不是那样的话,我该如何制作这样的剧本呢?
样本数据库:http://pastebin.com/ZYf8baV3
下面是我需要的快速绘图:画图
发布于 2016-06-02 19:36:57
听起来你想要扳机
MySQL触发器是与表关联的数据库对象。当为表执行定义的操作时,它将被激活。在表上运行以下MySQL语句之一时,可以执行触发器:插入、更新和删除。它可以在事件之前或之后调用。
使用您提供的数据的快速示例:
CREATE TRIGGER CasscadeUsername_after_update
AFTER UPDATE
ON Users FOR EACH ROW
BEGIN
UPDATE forum_users
SET forum_username = username
WHERE forum_users.user_id = users.user_id
END下面是教程触发语法的链接
发布于 2016-06-02 19:33:23
若要使用相应的用户名forum_user更新用户的所有记录,请使用以下代码
update user a
set username = (select forum_user_name from forum_user b
where b.forum_user_id=a.user_id);若要仅对单个记录(例如23 )进行更新,请使用以下update语句
update user a
set username = (select forum_user_name from forum_user b
where b.forum_user_id=23)
where user_id=23;https://stackoverflow.com/questions/37600339
复制相似问题