我有两张桌子
id_sale int
id_projet int
price float
date date
id_sale_ligne int
id_sale int FK_SALE
id_projet int
price float
date date
即时通讯问我制作新记录时如何在具有相同id_sale的sale_line上插入记录。我知道这是一个很大的问题,但我确实陷在这里,我可以在ZF官方文档中找到此示例,因此任何人都可以帮助我提出建议或提供完整示例的参考文献来解释我的情况
太谢谢了
有几种方法可以做到这一点。最简单的方法可能是在您第一次将SQL查询插入后执行另一个SQL查询sale
。您可以执行以下操作:
// Insert sale and get the ID
$this->dbAdapter->query('INSERT INTO sale (price, date) VALUES (?, ?)', array('price', 'date'));
$salesId = $this->dbAdapter->getDriver()->getLastGeneratedValue();
$this->dbAdapter->query('INSERT INTO sale_ligne (price, date, id_sale) VALUES (?, ?, ?)', array('price', 'date', $salesId));
请不要在上面的示例中省略了错误处理。getLastGeneratedValue
假设您在sale
表的主键上使用自动递增,该方法将返回最后生成的ID 。
或者,您可以使用来在存储过程中执行相同的操作LAST_INSERT_ID()
。由于表的性质,您可能需要指定要插入sale_ligne
表中的数据(即,值不等于默认列值)。否则,可能可以在sale
表上添加一个插入触发器,然后在该触发器内进行插入。但是,第一种方法或在存储过程中将更易于实现,并为您提供更多控制权,并使其他开发人员更容易理解流程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句