對不起,如果這是愚蠢的問題。 我有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