我有19个表都将名为CompanyID
的列设置为外键,引用company
表主键设置为auto_increment的CompanyID。
有没有办法可以插入所有表而无需在每个查询中指定CompanyID?因此,如果我首先插入company
表,它将自动分配一个CompanyID,我需要使用它插入其他19个表,但我如何获取此信息?
我能想到的唯一方法是使用php自动生成ID,但我不喜欢这种方法,因为它不会遵循我想要使用的1,2,3约定。另一种方法是在插入信息后将信息插入company
运行一个选择,并将公司名称与CompanyID匹配,并将其设置为我脚本中的变量,但这似乎是一些额外的废话。有没有更好的办法?希望这是有道理的。
答案 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