postgresql 如何更新前n条记录并保持原子性?

目前有一个需求是从psql中更新前n条记录,并保证操作具有原子性。

从stackoverflow上找到更新前n条的方法是

UPDATE Table SET Checked='Y' 
WHERE ID =(SELECT ID FROM Table WHERE Checked='N' ORDER BY ID LIMIT 1) 

但是这样的操作是先select再update,这个操作在多进程上不会出现竞争吗?

小白,对sql不是很熟,望大神赐教。

阅读 4.6k
1 个回答

查了一下,sql中每个事务是保持原子性的,这个语句整体被视为一个事务,因此具有原子性。感谢评论里的@萝卜

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进