我有三个不同的表,其中一列有关自动增量。当我运行注册PHP脚本时,它会将数据写入所有三个表,并且信息彼此相关。但是,如果我在其中一个脚本上出错,它会将数据保存在两个表中,例如ID = 4,而第三个表仍然有ID = 3的数据。以下是我的问题:
如何确保所有SQL查询都运行,如果其中一个失败,它根本不会运行并弄乱我的ID?
如果刷新了具有保存数据代码的页面并且因此运行多次,那么如何确保信息不会多次存储?
答案 0 :(得分:1)
我建议您在sql中签出TRANSACTIONS
。事务可以运行多个sql查询,条件是如果其中一个查询失败,整个事务将失败,因此数据库中不会保存任何数据。
答案 1 :(得分:1)
事务是一组连续的数据库操作操作,就像它是一个单独的工作单元一样。换句话说,除非组内的每个单独操作都成功,否则交易永远不会完成。如果事务中的任何操作失败,整个事务将失败。
实际上,您会将许多SQL查询添加到一个组中,并且您将作为事务的一部分一起执行所有这些查询。
阅读本教程关于MySQL transaction
的内容