Re: [請益] 關於劃位系統的概念
※ 引述《up9cloud (九天)》之銘言:
: 一直以來
: 我都以為用PDO會自動做完transaction
: 直到看到這篇
: http://stackoverflow.com/questions/3106737/pdo-mysql-transactions-and-table-locking
: 想請教一下
: 1.除了mysql之外,哪些資料庫是可以安全使用PDO::beginTransaction
: 2.php+mysql有沒有什麼好的寫法可以參考的?
: 謝謝!
Transaction要搭配Lock才是完整的交易
beginTransaction;
SELECT xxx FROM table WHERE id=123 FOR UPDATE;
UPDATE table SET xxx = abc WHERE id=123;
COMMIT;
重點在SELECT FOR UPDATE,這會讓InnoDB把那個row鎖起來,直到你commit為止
這就避免了兩個client,先後送出query,後面的覆蓋掉前面的
你可以試試看開個console,手動操作lock後不要commit,然後再開
另外一個console做一樣的事,你會發現交易失敗了
有InnoDB,沒加上Lock,資料操作的行為就跟MyISAM是一樣的
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.170.85.132
※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1403798029.A.CB0.html
推
06/27 04:23, , 1F
06/27 04:23, 1F
→
06/27 04:26, , 2F
06/27 04:26, 2F
推
06/27 08:56, , 3F
06/27 08:56, 3F
推
06/27 09:01, , 4F
06/27 09:01, 4F
→
06/27 09:02, , 5F
06/27 09:02, 5F
→
06/27 09:03, , 6F
06/27 09:03, 6F
→
06/27 09:04, , 7F
06/27 09:04, 7F
→
06/28 00:46, , 8F
06/28 00:46, 8F
→
06/28 00:46, , 9F
06/28 00:46, 9F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章