2012-07-16 24 views
6

Bu "karşılaştır ve takas" ifadesi her zaman motora bakmaksızın atomiktir (örn. InnoDB veya MyISAM)? : Ben işlem ve işlemsel olmayan veritabanı tabloları ile uyumlu olan sözde satır düzeyinde kilitleme yapmak için bu ifadeyi kullanmak niyetinde çünküMySQL Atomic UPDATE InnoDB vs MyISAM

UPDATE tbl_name SET locked=1 WHERE id=ID AND locked <> 1; 

Bunu sormak.

Bu, recommended for MyISAM yöntemidir, ancak belgelerin bunun yerine işlemleri kullanmasını önerdiğinden, bunun InnoDB için çalışıp çalışmadığı konusunda emin değilim.

+0

Bağlantı bozuk. Dolayısıyla, bu izole ifadenin kullanımı belirsizdir. –

cevap

4

Evet. InnoDB'de, satır kilitlenecek (id üzerinde benzersiz bir dizininiz var, güncelleme, taraması gereken tüm satırları kilitler), güncellendi ve kilit açıldı. Açık bir işleminiz yoksa/auto-commit açıksa, her ifade kendi işleminde çalışır, ancak hala bir işlem ve kilitleme yapılır

İlgili konular