php – 如何在不牺牲完整性的情况下在MySQL数据库表中获取最新的设置ID?
作者:互联网
我正在使用PHP将记录组插入MySQL数据库.
每当我插入一组记录时,我想给该组一个唯一的集ID,对于DB中的每组记录,该ID增加1.
目前,我正在检查数据库中的最新设置ID,并为每个新记录集将其递增1.
令我害怕的是,如果我查询数据库以获取最新的设置ID,并且在我可以插入具有该设置ID 1的新记录集之前会发生什么,则在表上发生另一个插入,因此获取设置ID我是即将使用?
虽然不太可能,但类似的东西可能会大大牺牲数据的完整性.
我该怎么做才能防止这种事情发生?有没有办法临时锁定数据库表,以便在我执行SELECT / INSERT组合之前不会发生其他插入?
解决方法:
锁定表是一种选择,但这种方法会影响并发性.
我建议的方法是使用带有AUTO_INCREMENT列的单独表,并在该表中使用单独的INSERT,并使用SELECT LAST_INSERT_ID()来检索auto_increment值.
然后使用该值作为插入原始表的行组的组标识符.
标签:php,sql,mysql,database,data-integrity 来源: https://codeday.me/bug/20190728/1561912.html