mySQL中的外键引用

mySQL中的外键引用,mysql,Mysql,在mySQL中,如果我创建了两个表,表上包含一个引用到另一个表的外键。我在另一个表中输入了数据,并在该表中输入了定义的外键的数据。外键是否可以在第二个表中自动更新,而不必键入整个数据? 例如,我有一个customer表,它有两个字段——customerID和customerName。另一个表是发票表,它有3个字段-invoiceID、cost和customerID,其中customerID是外键。因此,如果我在customer表和invoice表中输入数据,因为客户数量非常多,我不想继续在inv

在mySQL中,如果我创建了两个表,表上包含一个引用到另一个表的外键。我在另一个表中输入了数据,并在该表中输入了定义的外键的数据。外键是否可以在第二个表中自动更新,而不必键入整个数据?
例如,我有一个customer表,它有两个字段——customerID和customerName。另一个表是发票表,它有3个字段-invoiceID、cost和customerID,其中customerID是外键。因此,如果我在customer表和invoice表中输入数据,因为客户数量非常多,我不想继续在invoice表中输入customerID。由于customerID是另一个表中的外键,如何使其自动从customer表中引用它?

如果您在发票数据中有客户名称,并且客户数据已经填充,您可以这样做

INSERT INTO tbl_invoice (invoiceData, invoiceData2, customerID)
  SELECT 'value1', 'value2', customer.customerID
  FROM tbl_customer customer
  WHERE customer.customerName = 'customer name'
因此,您不需要直接处理客户ID


MySQL中没有自动功能可以做到这一点。如果需要,可以使用触发器。

您可以自动添加预定义的数字,如1,但这会将所有发票分配给客户1

另一方面,您可以在添加发票时自动添加客户。为此,您需要控制customerID,如果给定ID的客户不存在,则在customer表中插入一个名称为空的新客户。之后,您仍然需要输入这些客户的名称,但不是按一个输入,这样做(可能)会更容易


我认为你的想法有误导性。我强烈建议您阅读一本书或在线阅读教程,或检查一个示例项目的数据库表。

这不安全,名称属性永远不能作为主键并用于这样的操作。@IsmetAlkan那么您是说它不安全还是无法完成?如果你说它不安全,因为可能有多个同名客户,我同意。这是OP需要考虑的问题。如果你说这件事做不到,那就错了。你是对的,但我们同意这很容易出错。向初学者建议一些东西(我猜),请让我们更加谨慎。我认为对于只有两个字段的customer表,customer id+customer name,已经存在这个问题。我看不出有什么办法可以区分同名客户。如果customer表中有更多信息,也可以将所有相同的信息添加到此查询中,因此基本上这是customer表的一个限制。很抱歉……我不清楚这些字段。将有更多的字段,如lastName、address等。我只是不确定引用将如何工作。我在mySQL之前使用Access,它会自动从原始表中接收外键的值,所以我想知道是否有类似的功能。谢谢。。。