2

我在 php 和 mysql 中相对较新。我在表中插入值时面临的问题。我的leaveleave包含以下列..

1.lid(INT主键)

2.empname(varchar)

3.用户名(varchar)

4.点头(INT)

5.sdate(日期)

6.日期(日期)

7.原因(varchar)

8.action(varchar)

9.empID(INT FOREIGN KEY)

empID是表中的foreign key参考资料users。我在向表中插入值时面临的问题。leave错误如下

无法添加或更新子行:外键约束失败 ( db_attendance1. leave, CONSTRAINT leave_ibfk_1FOREIGN KEY ( empID) REFERENCES users( empID))

在这里,我只是发送查询,就在这里..

    mysql_query("INSERT INTO `leave` 
           (`empname`, `username`,
            `nod`, `sdate`, `edate`,
            `reason`,`action`) 
            VALUES ('$empname', '$username', 
            '$nod', '$sdate', 
            '$edate', '$reason','');",
            $dbCon) or die(mysql_error());
4

3 回答 3

8

外键约束意味着您的一个表不接受会“破坏”外键的插入、更新或删除。这意味着,如果用户中不存在新的 EmpID,您将无法更新 EmpID。如果用户表中不存在新的 EmpID,则无法添加新的 EmpID,等等。因此,要解决此问题,您需要确保您尝试添加到表“离开”的 EmpID 首先存在于表“用户”中。外键可以是一个真正强大的项目,但也可以是一个真正的痛苦。由于您正在处理的数据库有外键约束,我建议您阅读一下它们:http ://en.wikipedia.org/wiki/Foreign_key

于 2013-04-22T05:53:25.057 回答
8

你可以把

SET FOREIGN_KEY_CHECKS=0;

并运行您的查询。再次完成后将其设置回 1 by

SET FOREIGN_KEY_CHECKS=1;
于 2014-01-28T04:31:20.337 回答
0

Borniet,你帮我解决了我的类似问题。

@OP - 我所要做的就是在表中创建一个相应的行,以便外键存在。例如,表 1 有列名称 表 2 有列 friends_name,这是一个与表 1 中的名称相关联的外键。我收到此错误是因为我试图在表 2 中插入一行,其中 friends_name 引用了表 1 中不存在的名称。所以我创建了这个名字,我们开始比赛了:)。

于 2013-10-21T12:58:46.053 回答