2012-05-19 30 views
0

我需要在使用我的PHP代碼更新MYSQL表之後返回受影響行的主鍵。 有沒有辦法實現這一點?我需要在MYSQL中更新表後返回受影響行的主鍵。

+0

如果你已經更新現有的記錄,那麼你必須以某種方式識別它們 - 所以你的調用(PHP)代碼已經知道某種關鍵;如果它不是PK但你想獲取PK,你可以通過SELECT ... WHERE來獲得它。或者當你說「更新」時,你是否實際上在表中插入了*新的*記錄? – eggyal

+0

我不認爲有辦法做到這一點。之後你只需要執行一個SELECT查詢。 –

+0

至今嘗試過 mysql_affected_rows(); mysql_info(); –

回答

2

您需要執行UPDATE之前獲取的主鍵:

SELECT primary_key_columns FROM my_table WHERE status = 'O'; 
UPDATE my_table SET status = 'E' WHERE status = 'O'; 

但是,如果有可能改變這兩種說法之間my_table併發連接,它可能是按鍵的結果被返回第一個SELECT聲明將不會完全匹配由第二個UPDATE聲明更新的記錄。

爲了防止這種情況,你需要在一個事務中執行的操作(但要注意交易從你的存儲引擎需要的支持 - InnoDB的通常用於此目的):

START TRANSACTION; 
SELECT primary_key_columns FROM my_table WHERE status = 'O' FOR UPDATE; 
UPDATE my_table SET status = 'E' WHERE status = 'O'; 
COMMIT; 
1

做一個你想做的事情的方法是在你進行更新之前,先選擇主鍵和更新條件。

如果您的查詢是

更新*從 「表」,其中Y

你就必須做到以下幾點:

選擇 「表格」, 「主鍵」,其中Y

更新X從「表」其中Y

希望這有助於!

相關問題