MySQL:更改外键列 - 但保持数据引用完整

标签 mysql foreign-keys

我在更改外键引用和保持数据引用完整方面遇到问题。

我有一个包含评论的表,这些评论是由用户创建的,用户存储在一个单独的表中,并通过外键从评论表中引用。所以我的数据库中已经有很多数据,我不能直接丢弃它们。

起初,我为每个用户创建了自己的登录系统,每个用户都有一个唯一的 ID(他们的用户名 - 我知道,过去的我是个 SCSS ,没有使用整数作为 ID),这是引用的 ID,现在我已对其进行更改,以便所有用户都需要 Facebook 才能使用该页面。这就是我的问题所在 - 我希望将评论外键更改为 Facebook ID 而不是用户名,但我不想失去评论和用户之间的数据关系。

我有以下表格及其列的设置:

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。

哪位有这方面经验的可以帮忙或者指点一下吗?

最佳答案

我想出了一个解决方法: 使用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 列。

关于MySQL:更改外键列 - 但保持数据引用完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26867475/

相关文章:

java - 如何使用两个日期之间的数据从mysql加载数据

mysql - 我需要从 MySQL 表中选择一个特定的日期范围,忽略年份

postgresql - "polymorphism"用于 FOREIGN KEY 约束

python - 如何编写自引用 Django 模型?

php - 将 html(填充 mysql)表导出到 excel 文件

javascript - Node.js 与 PHP session 、MySQL 和/或 Redis?

C# 日期时间 SqlNullValueException : Data is Null

python - 在保存模型之前验证内联

c# - Entity Framework Core 中的外键 NullReferenceException

MySQL外键约束困惑(他的工作是什么?)