gpt4 book ai didi

PHP MySQL向多个表插入数据

转载 作者:行者123 更新时间:2023-12-01 00:16:25 24 4
gpt4 key购买 nike

我正在尝试制作一个实验性 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 是否有任何允许拆分插入查询的内置逻辑?触发器是否能够处理这种类型的事务,或者它是否超出了它的能力?

如有任何建议、想法或想法,我们将不胜感激。

谢谢!

最佳答案

一个解决方案是使用 Transactions ,这允许获得“全有或全无”行为。

思路如下:

  • 您开始交易
  • 你做你的插入/更新
  • 如果一切正常,您提交交易;这将保存您在此交易期间所做的一切
  • 如果不是,则回滚事务;你在其中所做的一切都将被取消。
  • 如果您不提交并断开连接(例如,如果您的 PHP 脚本终止),则不会提交任何内容,并且您在未提交事务期间所做的操作将自动回滚.

更多信息,您可以查看12.4.1. START TRANSACTION, COMMIT, and ROLLBACK Syntax , 用于 MySQL。


请注意,事务仅适用于某些数据库引擎:

  • > MyISAM不支持交易
  • > InnoDB (它还支持外键,例如——它比 MyISAM 先进得多)

关于PHP MySQL向多个表插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com