选择,更新并返回所选值

时间:2018-04-20 10:20:28

标签: mysql sql

我需要在选择的同一时刻锁定行。 所以我需要某种交易:

1)@OneToOne(fetch = FetchType.EAGER) @JoinColumn(name="COUNTRY_ID", nullable=false) private Country country;

2)@OneToOne(fetch = FetchType.EAGER) @JoinColumn(name="COUNTRY_ID") private Country country;

3)SELECT * FROM changes WHERE locked=0

有可能吗?

2 个答案:

答案 0 :(得分:0)

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

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();

或调用存储过程持有相同的查询,您可以执行标量来检查是否因为更新而影响任何行,并且只有在发生更改时您将查询最后的更改,换句话说无限组合来解决此问题。

答案 1 :(得分:0)

根据您澄清的内容,交易将是您最好的选择(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;