2011-04-11 13 views
0

我最近從SQL Server切換到MySQL,並且我無法找到任何地方這個問題的足夠的答案:

我在表上使用PHP,MySQL和InnoDB表引擎我需要鎖定。因此,對於標準系列的第3點聲明:

  1. 插入到表一
  2. 的$ id = $ mdb2-> lastInsertID()
  3. 插入到表B(名稱,FK)VALUES( '富', $ id)

我需要採取哪些步驟來確保$ id具有來自步驟1的插入值?它的方式很好嗎?一切都需要進行交易嗎?我是否需要添加其他查詢來鎖定和釋放表格?

謝謝你們。

回答

0

更好的使用事務,如果任何查詢失敗,至少其他更新可以回滾。

或如果步驟3失敗,你將在可變收到錯誤消息從MySQL商店消息,如果收到的刪除插入1步記錄檢查,通過自己

處理。

這就是所有的事務句柄。你應該使用交易。

4

你應該/可以,但你不需要做任何事情: information-functions , function_last-insert-id

已生成維持在每個連接的服務器的ID。這意味着該函數返回給定客戶端的值是爲該客戶端影響AUTO_INCREMENT列的最新語句生成的第一個AUTO_INCREMENT值。即使它們生成自己的AUTO_INCREMENT值,該值也不會受到其他客戶端的影響。此行爲可確保每個客戶端都可以檢索自己的ID,而不必關心其他客戶端的活動,而無需鎖定或事務。

相關問題