gpt4 book ai didi

mysql - MySQL/MyISAM 中的原子查询

转载 作者:可可西里 更新时间:2023-11-01 08:06:44 24 4
gpt4 key购买 nike

假设我想使用带有 MyISAM 引擎的 MySQL 从一个表中选择一个最大值,然后根据这个值插入一个新记录这个最大值 + 1(在对其应用转换之后) .我不希望同时发生的任何其他事务将读取相同的最大值,然后尝试插入相同的新记录。

如何防止这种情况发生?

我需要 LOCK整张 table ,还是什么?


明确地说,我相当肯定我不能在这里使用 AUTO_INCREMENT,除非我可以将它执行的操作重新定义为比“加一”复杂得多的操作。

最佳答案

LOCK TABLES `tbl` WRITE;
INSERT INTO `tbl` (`id`, `foo`) SELECT MAX(`id`)+1, 'bar' FROM `tbl`;
UNLOCK TABLES;

但如果它是标准主键/ID 类型字段,则应使用 AUTO_INCREMENT

关于mysql - MySQL/MyISAM 中的原子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12432123/

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