【问题标题】:How foreign key in a child table, can automatically get the value it actually has in the parent table子表中的外键如何自动获取它在父表中的实际值
【发布时间】:2012-11-29 21:26:14
【问题描述】:

谁能判断子表中的外键是否可以自动获取它在父表中实际具有的值? 我有两个表学生和课程表。学生 SSC 是课程中的外键。我将数据正确插入到学生表中。但是当我将数据插入课程表时它给了我一个错误?有什么建议吗? 变量的值是通过表单的post方法获取的。

$query1=mysql_query("INSERT INTO course VALUES('','$subject','$total','$attendce','$ssn')")or die(mysql_error());

这是我遇到的错误......

无法添加或更新子行:外键约束失败 (`cast_db`.`course`, 约束 `course_ibfk_1` 外键 (`cnic`) REFERENCES `student` (`cnic`) ON DELETE CASCADE ON UPDATE CASCADE)

【问题讨论】:

  • 什么样的错误?您如何尝试插入数据?请提供这些详细信息,以便我们为您提供帮助。我们不是你知道的介意读者!
  • 如果我正确理解您的问题,那么我建议您应该使用 last_insert_index() 来检索索引。否则,请提供更多详细信息,如果可能,请提供 sql。
  • 您使用什么语言/框架/情况?直接SQL?有时您可以通过多种方式执行此类操作,但这完全取决于您的真正要求。您没有向我们提供足够的信息来帮助您。
  • @Madara Uchiha 我在已编辑的问题中提供了代码。请看一下。
  • 什么是表架构?第一列是外键吗?

标签: php mysql


【解决方案1】:

外键不是这样工作的。您必须先创建父记录,获取该记录的 ID(无论主键是什么)值,然后在子记录插入中使用该值。

记住 - 一个父表可以有许多记录。数据库无法知道哪些记录是新子记录的父记录。您必须明确地说“这个新的子记录有父 X”。

【讨论】:

  • 是的,听起来不错。我在父表中插入记录,然后在子表中插入记录。(SSC 是我在父表中的 PK,在子表中是 FK)。但它不起作用。
  • @Naeem Marc B 的答案是正确的,您只需更正 SQL 命令的顺序即可。如果您在使用 SQL 插入这些记录时遇到问题,则需要发布您正在使用的 SQL 以及您使用该 SQL 时遇到的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2015-06-17
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多