1
我可以使用此功能,而不是「LOCK TABLES」查詢?pdo :: beginTransaction是否鎖表?
例子:
pdo::beginTransaction();
SELECT id AS last_id FROM t WHERE...
INSERT INTO t (id,...) VALUES (last_id+1,....)
pdo::commit();
我可以使用此功能,而不是「LOCK TABLES」查詢?pdo :: beginTransaction是否鎖表?
例子:
pdo::beginTransaction();
SELECT id AS last_id FROM t WHERE...
INSERT INTO t (id,...) VALUES (last_id+1,....)
pdo::commit();
這個問題的答案是:這取決於。最重要的資源,幫助您瞭解正是它,它不會做,它的工作原理是here。
對於開球,這取決於底層的驅動程序(MySQL和MSSQL,等等等等)是否支持事務處理功能在所有。如果驅動程序不支持事務,pdo::beginTransaction();
將失敗,並返回FALSE
,和您所有的疑問將被立即執行。這並不是說LOCK TABLES
查詢會失敗 - 這取決於底層數據庫引擎是否支持它。
事實上,至少在MySQL中,pdo::beginTransaction()
遵循與START TRANSACTION
聲明相同的規則。它不會立即鎖定表,它只是確保了這是交易的一部分查詢遵循ACID規則。
我不會去的到底是哪組合將工作,他們會做什麼,因爲他們在我鏈接到文件的長度覆蓋全部細節,並沒有在我沒有任何意義又寫了這一切。