我的数据库的外键问题

时间:2010-08-31 17:22:07

标签: mysql database database-design mysql-error-1451

我正在创建一个社交网站,我在朋友桌上工作,不知道我做错了什么。

我有users(userId,name - userId是主键)和另一个名为friends的表(friend1,friend2,status)。 friend1friend2是更新和删除时userId的外键设置为级联 表用户在其中有一个带有134的条目作为Id,我想将其更改为3.我只是在弄乱这些东西是如何工作的。在friends表中有两行值143。如果我将134更改为3,它不会在更新上级联,也会在friends表中更改这些值。我收到此错误

1451 - 无法删除或更新父行:外键约束失败(modionz1_nightspot/friends,CONSTRAINT friends_ibfk_1 FOREIGN KEY(friend1)REFERENCES users({{1 }))

顺便说一下,这两张表都是无与伦比的。任何有关这些概念的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,级联更新对于任何期望拥有超过几百条记录的数据库来说都是一个非常糟糕的主意。如果您使用它并且您拥有数千或数百万个子记录,那么您可以锁定整个系统数小时。避免级联更新。正确的过程是添加所需的父记录。然后更新子记录以反映该值而不是初始值,然后删除旧的父记录。不管怎样,最好设计一下你不需要更新PK的地方,这也是很多人使用代理键的原因之一。