MySQL读取不重复的数据,读取之前可以判断一下IsRead是0,0表示可以读取,1表示不可读取,读取失败需要释放掉改为0,方便第二次读取
/// <summary>
/// 获取并更新IsRed
/// </summary>
/// <param name="SceneCode"></param>
/// <param name="IsRead"></param>
/// <returns></returns>
public McAutoscenetask GetByIsRedModel(string SceneCode, int IsRed)
{
var dic = new StatementParameterCollection();
StringBuilder sbSql = new StringBuilder();
sbSql.Append("start transaction;select * from mc_autoscenetask
where SceneCode=@SceneCode for update;update mc_autoscenetask set IsRead=@IsRead
where SceneCode=@SceneCode;commit;");
dic.AddInParameter("@SceneCode", DbType.String, SceneCode);
dic.AddInParameter("@IsRead", DbType.Int32, IsRed);
return baseDao.SelectFirst<McAutoscenetask>(sbSql.ToString(), dic);
}
本文介绍了一种使用MySQL实现的唯一数据读取及更新的方法。通过事务处理确保数据的原子性和一致性,避免了同一数据被多次读取的问题。具体实现中利用了for update子句锁定待读取的记录,并在读取后更新该记录的状态。
1078

被折叠的 条评论
为什么被折叠?



