近期在做訂單系統開發的時候遇到了此類情景,A表內插入后返回新插入的主鍵ID,然后用於B表插入數據並攜帶此id。
目前有幾個方法總結
No1.每次插入數據之后返回A表內的最大值,但是對於多用戶以及高並發來說這個方案不可行,首先是數據量大對數據庫造成的壓力也大,其次高並發時會造成數據丟失或者數據重復的問題,So,此方法Out!
No2.插入數據之后調用mysql_insert_id(),mysql_insert_id() 返回給定的 connection 中上一步 INSERT 查詢中產生的 AUTO_INCREMENT 的 ID 號。如果沒有指定 connection ,則使用上一個打開的連接,但是遇到某些情況還是同上,訂單重復等問題比較雞肋。
No3.也是我現在使用的,使用 SELECT LAST_INSERT_ID() ,目前使用此方法暫時還沒有發現什么問題,整體來說還是推薦這個第三種的方法
具體Code
$querys="SELECT LAST_INSERT_ID()"; $results=mysql_query($querys); $rows=mysql_fetch_row($results); echo $rows[0];