我有一个表,其中有一个主键,而另一列是同一数据库中另一个表的主键。
我只是想添加foregin键,但显示错误-
#1452 - Cannot add or update a child row: a foreign key constraint fails
(`c2cjobportal`.`#sql-114c_e3`,CONSTRAINT `fk_PerOrders
`FOREIGN KEY (`jobseekers_id`) REFERENCES `jobseekers` (`jobseekers_id`))
是什么原因造成的?
我的SQL代码是-
ALTER TABLE `jobseekers_customprofile`
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (jobseekers_Id)
REFERENCES jobseekers(jobseekers_Id)
最佳答案
我想你盲目跟风。
我相信不仅但完全知道从w3cschool复制了代码并尝试了您的代码,因为它看起来非常相似
http://www.w3schools.com/sql/sql_foreignkey.asp
您使用的代码是
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
但是您还没有看到上面写的内容:“要允许命名FOREIGN KEY约束,并在多个列上定义FOREIGN KEY约束,请使用以下SQL语法:”首先阅读然后遵循这些内容,切勿着急。
由于您已读取并复制并粘贴了未尝试的其他资源,并在此处发布了问题,因此您得到了-1(偏离航向的位置不是我提供的,而且我也无法提供此权限)。
来到现实中-
您的senario与您发布sql的代码应该是这样的-
ALTER TABLE `jobseekers_customprofile`
ADD CONSTRAINT FOREIGN KEY (jobseekers_Id)
REFERENCES jobseekers(jobseekers_Id)
条件是,如果其中已有数据,则可能无法解决您的问题,因此请在执行此查询之前检查数据。您还可以使用ON UPDATE CASCADE和DELETE ON CASCADE ON DELETE CASCADE ON DELETE DEFAULT来执行任何操作
尝试也引用这些
http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html
mysql foreign key error #1452
Mysql error 1452 - Cannot add or update a child row: a foreign key constraint fails
关于mysql - 将外键添加到现有列时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16997986/