我在这里有点奇怪的情况,我无法改变数据库结构,所以请不要提及。
我有两个名为users和forum_users的表。 '用户' table有两行:user_id(primary),username。 ' forum_users' table有三行:id(主要),forum_user_id,forum_username。
假设我们的用户的user_id为' 23'。此用户已自动添加到forum_users表中,其ID为' 1',forum_user_id为' 23'以及随机的forum_username。 我想要完成的是,我想要' forum_username'数据要更新为'用户名'条目数据' user_id'等于' forum_user_id'。
我该如何完成此操作?这可以通过MySQL完成而不使用任何类型的外部脚本吗?如果没有,那么我如何制作这样的剧本?
示例数据库:http://pastebin.com/ZYf8baV3
这里是我需要的快速绘图: Drawing
答案 0 :(得分:1)
听起来你想要一个触发器
MySQL触发器是与表关联的数据库对象。当为表执行定义的操作时,它将被激活。当您在表上运行以下MySQL语句之一时,可以执行触发器:INSERT,UPDATE和DELETE。它可以在事件之前或之后调用。
使用您提供的数据的快速示例:
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
以下是教程trigger-syntax
的链接答案 1 :(得分:0)
要使用相应的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 user a
set username = (select forum_user_name from forum_user b
where b.forum_user_id=23)
where user_id=23;