gpt4 book ai didi

mysql - 触发器是基于原子查询的吗?

转载 作者:可可西里 更新时间:2023-11-01 07:35:20 28 4
gpt4 key购买 nike

我有一个有序列号的表。此序列号将更改并且引用自动编号将不起作用。我担心触发器的值会发生冲突。如果两个事务同时读取。

我已经对 3 个连接进行了模拟测试,每个连接大约有 100 万条记录,并且没有发生冲突。

CREATE TABLE `aut` (
`au_id` int(10) NOT NULL AUTO_INCREMENT,
`au_control` int(10) DEFAULT NULL,
`au_name` varchar(50) DEFAULT NULL,
`did` int(10) DEFAULT NULL,
PRIMARY KEY (`au_id`),
KEY `Did` (`did`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

TRIGGER `binc_control` BEFORE INSERT ON `aut` 
FOR EACH ROW BEGIN
SET NEW.AU_CONTROL = (SELECT COUNT(did)+1 FROM aut WHERE did = NEW.did);
END;

最佳答案

是的,如果两个 session 同时运行触发器,这会受到竞争条件的影响。您不应该使用此解决方案。

它可能不会在测试期间发生,但您可以假设它在生产期间发生。 :-)

有句老话,One in a million is next Tuesday .

关于mysql - 触发器是基于原子查询的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19505581/

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