我有一个关于更改外键引用和保持数据引用不变的问题。
我有一个包含注释的表,这些注释由用户创建,用户存储在单独的表中,并通过外键从注释表中引用。所以我的数据库中已经有很多数据,我不能放弃。
起初,我创建了自己的登录系统,每个用户都有一个唯一的ID(他们的用户名 - 我知道,过去我是一个冲洗,并没有使用ID的整数),这是引用的ID,并且现在我已经改变它,以便所有用户都需要Facebook来使用该页面。这就是我的问题所在 - 我希望将注释外键更改为Facebook ID而不是userName,但我不想放弃注释和用户之间的数据关系。
我有以下表格及其列的设置:
CommentsTable: [commentID] [comment] [UsersTable_userName]
UsersTable: [userID] [(varchar) userName] [(int) facebookID]
我想要的是这个:
CommentsTable: [commentID] [comment] [UsersTable_facebookID]
UsersTable: [userID] [(varchar) userName] [(int) facebookID]
我尝试在commentsTable中创建一个额外的外键 - 但这并没有保持关系。
我也无法直接将commentsTable中的指针更改为指向FacebookID,因为一个是varchar而另一个是int。
对此有经验的人可以提供帮助或指点吗?
答案 0 :(得分:0)
我想出了一个解决方法: 使用http://dev.mysql.com/doc/refman/5.0/en/update.html
UPDATE `Table A`,`Table B`
SET `Table A`.`text`=concat_ws('',`Table A`.`text`,`Table B`.`B-num`," from ",`Table B`.`date`,'/')
WHERE `Table A`.`A-num` = `Table B`.`A-num`
所以我在评论表中为Facebook ID做了一个专栏,使用了上面显示的UPDATE查询(当然输入正确的名称)。
之后我删除了commentsTable中的旧[UsersTable_userName]列,并使我的查询指向了FacebookID列。