我需要在选择的同一时刻锁定行。 所以我需要某种交易:
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
有可能吗?
答案 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;