我需要在使用我的PHP代碼更新MYSQL表之後返回受影響行的主鍵。 有沒有辦法實現這一點?我需要在MYSQL中更新表後返回受影響行的主鍵。
0
A
回答
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
希望這有助於!
相關問題
- 1. MySQL的更新將返回0行受到影響
- 2. MySQL獲取受影響的行的行ID並在更新後再次更新
- 3. MySQL更新查詢從另一個表返回0行受影響
- 4. 在mySQL/Codeigniter中返回的行數(不受LIMIT子句影響)
- 5. 返回受更新查詢影響的行數?
- 6. Postgres更新規則返回受影響的行數
- 7. 在MySQL中獲取更新值而不是受影響的行
- 8. 更新語句,返回0行受到影響
- 9. mysqli沒有返回受影響的行
- 10. SQLite3 - 返回受影響的行
- 11. Sequlize.js:.update不返回受影響的行
- 12. SQL更新後,wso2數據服務能否返回受影響的行?
- 13. ADODB受影響的行返回觸發器的受影響的行
- 14. 在UPDATE語句後返回受影響行的row_number()
- 15. php mysqli具有相同數據返回的更新表0受影響的行
- 16. 獲取MySQL更新語句中受影響的行數?
- 17. MySQL:插入....在重複密鑰更新:受影響的行== 3?
- 18. MYSQL程序運行,但返回0行受影響
- 19. 選擇受更新影響的行
- 20. 正在更新MySQL返回受影響的行,但實際上並未更新數據庫
- 21. Opencart mysql db返回受影響的行數
- 22. Mysql對於受影響的行總是返回1
- 23. 實體框架和MySQL - 受影響的行沒有返回數
- 24. 在MySQL中更新/刪除並獲取受影響的行ID列表?
- 25. 在MySQL中查找受影響的字段更新查詢
- 26. 在MySQL更新中獲取所有受影響的rown
- 27. 獲取受影響的行mysql中
- 28. 在多行mongodb更新中受影響的行數
- 29. 在MySQL中插入後獲取受影響的行?
- 30. Doctrine ORM:在刷新更改後,我可以得到受影響的行數嗎?
如果你已經更新現有的記錄,那麼你必須以某種方式識別它們 - 所以你的調用(PHP)代碼已經知道某種關鍵;如果它不是PK但你想獲取PK,你可以通過SELECT ... WHERE來獲得它。或者當你說「更新」時,你是否實際上在表中插入了*新的*記錄? – eggyal
我不認爲有辦法做到這一點。之後你只需要執行一個SELECT查詢。 –
至今嘗試過 mysql_affected_rows(); mysql_info(); –