首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一行链接到另一表上的行?

问如何将一行链接到另一表上的行?
EN

Stack Overflow用户
提问于 2016-06-02 19:14:02
回答 2查看 1.1K关注 0票数 0

我这里有一些奇怪的情况,我不能改变数据库结构,所以请不要提及这一点。

我有两个表,名为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

下面是我需要的快速绘图:画图

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-02 19:36:57

听起来你想要扳机

MySQL触发器是与表关联的数据库对象。当为表执行定义的操作时,它将被激活。在表上运行以下MySQL语句之一时,可以执行触发器:插入、更新和删除。它可以在事件之前或之后调用。

使用您提供的数据的快速示例:

代码语言:javascript
复制
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

下面是教程触发语法的链接

票数 1
EN

Stack Overflow用户

发布于 2016-06-02 19:33:23

若要使用相应的用户名forum_user更新用户的所有记录,请使用以下代码

代码语言:javascript
复制
 update user a
    set username = (select forum_user_name  from forum_user b 
where b.forum_user_id=a.user_id);

若要仅对单个记录(例如23 )进行更新,请使用以下update语句

代码语言:javascript
复制
update user a
set username = (select forum_user_name  from forum_user b
 where b.forum_user_id=23)
where user_id=23;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37600339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档