我需要在使用我的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(); –