选择、更新并返回所选值

aamkag61  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(309)

我需要在选中行的同时锁定行。所以我需要一种交易来:

  1. SELECT * FROM changes WHERE locked=0 2) UPDATE changes SET locked=1 3) return 1st query result 有可能吗?
h43kikqp

h43kikqp1#

根据您已澄清的内容,交易将是您的最佳选择(docs)。

START TRANSACTION;
/* Select the records to be changed */
SELECT * FROM changes WHERE locked=0;
/* Update records to set those that are not locked to locked */ 
UPDATE changes SET locked=1 WHERE locked = 0;
COMMIT;
ny6fqffe

ny6fqffe2#

您可以将所有查询混合在一起,以便获得所需的最终结果,您需要签署更改日期,以便能够对上次更改进行排序和筛选:
transact-sql:

string sql = "update changes set locked = 1, changed_date = getdate() where locked = 0;select top 1 * from changes order by changed_date desc;";
DataTable tbl = dal.fillAdapter();

或者调用保存相同查询的存储过程,可以执行scalar来检查是否有任何行因为更新而受到影响,并且只有在发生更改时才会查询最后的更改,换句话说就是没完没了的组合来解决这个问题。

相关问题