目前有一个需求是从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不是很熟,望大神赐教。
目前有一个需求是从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不是很熟,望大神赐教。
767 阅读
1 回答722 阅读
查了一下,sql中每个事务是保持原子性的,这个语句整体被视为一个事务,因此具有原子性。感谢评论里的@萝卜