为具有相同外键的表中的所有条目自动创建ID

时间:2014-02-09 02:56:16

标签: php mysql sql

我有19个表都将名为CompanyID的列设置为外键,引用company表主键设置为auto_increment的CompanyID。

有没有办法可以插入所有表而无需在每个查询中指定CompanyID?因此,如果我首先插入company表,它将自动分配一个CompanyID,我需要使用它插入其他19个表,但我如何获取此信息?

我能想到的唯一方法是使用php自动生成ID,但我不喜欢这种方法,因为它不会遵循我想要使用的1,2,3约定。另一种方法是在插入信息后将信息插入company运行一个选择,并将公司名称与CompanyID匹配,并将其设置为我脚本中的变量,但这似乎是一些额外的废话。有没有更好的办法?希望这是有道理的。

2 个答案:

答案 0 :(得分:1)

您使用last_insert_id();

e.g。

INSERT INTO company ....

$id = SELECT last_insert_id();

INSERT INTO othertable (company_id) VALUES ($id)
INSERT INTO yetanothertable (company_id) VALUES ($id)

大多数处理MySQL的DB库都有一些专用的函数/方法来获取这个ID,而不必进行全面的查询,但基本机制在所有库中都是相同的 - 插入“核心”记录,检索它使用last_insert_id()调用自动生成的ID,然后在所有子记录插入中使用该检索到的ID。

答案 1 :(得分:1)

你应该看一下Stored Routines。这可能会对您有所帮助:http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html