【问题标题】:Does MySQL Support Atomic Select and Update TogetherMySQL 是否同时支持原子选择和更新
【发布时间】:2013-03-22 14:48:25
【问题描述】:

我正在 MySQL 中寻找类似以下的内容:

SELECT Field1 
FROM MyTable 
AFTER UPDATE 
SET Field2 = 'myvalueX' 
WHERE Field3 = 'myvalueY';

上述假设语句为受语句更新部分影响的每一行返回 Field1 的值。

MySQL中是否存在这样的语句?

【问题讨论】:

标签: mysql select


【解决方案1】:

执行以下操作:

START TRANSACTION;
UPDATE ....
SELECT ....
COMMIT;

【讨论】:

  • 虽然功能强大,但这可能不是最佳解决方案,因为它可能会大大降低性能(锁定整个表),除非这不应该是经常发生的操作。
【解决方案2】:

如果您只更新一行,请使用last_insert_id() 来实现原子选择和同时更新

update <table> set status=1,id=last_insert_id(id) where status=0 limit 1;
select * from <table> where id=last_insert_id() limit 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多