3
有一個像這樣的SQL單個sql語句在innodb中總是原子嗎?
UPDATE xxx SET num = num -1 WHERE num> 0;
即使我沒有交易聲明,這是一個原子操作嗎?
這個sql可以確保num字段總是非負的嗎?
有一個像這樣的SQL單個sql語句在innodb中總是原子嗎?
UPDATE xxx SET num = num -1 WHERE num> 0;
即使我沒有交易聲明,這是一個原子操作嗎?
這個sql可以確保num字段總是非負的嗎?
如果啓用自動提交,是的,它會自動執行。除非自動提交被禁用,否則每個語句都將是單個事務。
應該指出,默認情況下自動提交是啓用的,因此爲什麼START TRANSACTION通常是啓動事務所必需的。
這個sql可以確保num字段總是非負的嗎? – jilen 2012-03-16 05:53:41
是的,會的。如果您收到此查詢的負面結果,應檢查以確保啓用自動提交。 'select @@ autocommit;'應該返回1. – 2012-03-16 05:57:55
認爲很多。自動提交實際上已啓用。我將使用這個sql來防止當我的系統同時被發現時出現負數 – jilen 2012-03-16 06:45:26