mySQL中的外键引用

时间:2013-04-21 08:32:57

标签: mysql

在mySQL中,如果我创建了两个表,并且在表上包含一个引用另一个表的外键。我已在另一个表中输入数据,并在其中输入已定义的外键。有没有办法让外键在第二个表中自动更新而不必输入整个数据? 例如,我有一个客户表,其中包含2个字段 - customerID和customerName。另一个表是发票表,其中有3个字段 - invoiceID,cost和customerID,其中customerID是外键。因此,如果我在客户表和发票表中输入数据,因为客户数量非常大,我不想继续在发票表中输入customerID。由于customerID是另一个表中的外键,如何让它自动从客户表中引用它?

2 个答案:

答案 0 :(得分:0)

如果您已在发票数据和客户数据中填写了客户名称,则可以执行

INSERT INTO tbl_invoice (invoiceData, invoiceData2, customerID)
  SELECT 'value1', 'value2', customer.customerID
  FROM tbl_customer customer
  WHERE customer.customerName = 'customer name'

因此,您无需直接处理客户ID。

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

答案 1 :(得分:0)

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

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

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