我正在尝试制作一个实验性的Web应用程序,以最大限度地减少冗余数据。 我有三个示例表设置如下:
Table one
ID | created_at (unix timestamp) | updated_at (unix timestamp)
Table two
ID | Foreign Key to table one | Title
Table three (pages)
ID | Foreign Keys to both table one and two | Content | Metadata
这个想法是在应用程序中创建的所有内容都有创建/编辑时间。
许多(但不是全部)事物都会有标题(例如页面或页面的部分)。
最后,有些东西会有自己特有的属性,例如页面的内容和元数据。
我正在尝试找出将数据输入多个表格的最佳方法。我知道我可以从PHP执行多个插入查询,跟踪当前事务中创建的行,并在事务的后续部分失败时删除这些行。但是,如果PHP脚本完全死亡,它可能会在所有删除完成之前停止。
MySQL是否有任何内置逻辑允许插入查询被拆分?触发器能够处理这种类型的事务还是超出其能力?
非常感谢任何建议,想法或想法。
谢谢!
答案 0 :(得分:6)
解决方案是使用Transactions,这样可以获得“全有或全无”的行为。
这个想法如下:
有关更多信息,您可以查看12.4.1. START TRANSACTION, COMMIT, and ROLLBACK Syntax,了解MySQL。
请注意,事务仅适用于某些数据库引擎:
答案 1 :(得分:1)
对于多个插入,您可以创建一个过程,在PHP上调用该过程。