对不起,如果这是愚蠢的问题。 我有70多个表和使用事务的MySQL InnoDB应用程序。 一切工作正常,除了一件事(表):InnoDB交易原理
CREATE TABLE IF NOT EXISTS `mag_pj_art_sums` (
`id` int(11) NOT NULL, (primary key)
`id_pj` int(11) NOT NULL, (index)
`id_artikal` int(11) NOT NULL, (index)
`kol_stanje_knjig` decimal(18,2) DEFAULT NULL)
我使用的是同样的原则为所有查询:
START TRANSACTION (query('set autocommit=0;'); query('START TRANSACTION;');)
SELECT … FROM table WHERE …
UPDATE TABLE SET …. WHERE ….
COMIT
中的所有表的主键用于SELECT和UPDATE(以下查询模式)。
除非我用mag_pj_art_sums:
SELECT … FROM mag_pj_art_sums WHERE (id_artikal='$id_artikal' AND id_pj='$id_pj')
和
UPDATE mag_pj_art_sums SET … WHERE (id_artikal='$id_artikal' AND id_pj='$id_pj')
难道那些行没有被锁定在这种情况下?
因为只有在这个表中,当有并发的SELECT - UPDATE查询时,我得到了不一致的值。查询执行时没有错误,但值不会更新,因为它们应该如此。
我的疑惑得到证实。谢谢 – MiTja