Ruby on rails Postgres更新(列表)中的id,但不更新最后一个条目

Ruby on rails Postgres更新(列表)中的id,但不更新最后一个条目,ruby-on-rails,postgresql,push-notification,Ruby On Rails,Postgresql,Push Notification,我正在构建一个RubyonRails后端来支持ios和android应用程序。一段代码应该用来处理通过推送通知推送的聊天信息。由于某种原因,当这些查询运行时 [2014-03-05 09:36:38.242] [DEBUG] ^[[1m^[[35mRpush::Notification Load (2.5ms)^[[0m SELECT "rpush_notifications".* FROM "rpush_notifications" WHERE (delivered = 'f' AND fa

我正在构建一个RubyonRails后端来支持ios和android应用程序。一段代码应该用来处理通过推送通知推送的聊天信息。由于某种原因,当这些查询运行时

[2014-03-05 09:36:38.242] [DEBUG] ^[[1m^[[35mRpush::Notification Load (2.5ms)^[[0m  SELECT "rpush_notifications".* FROM "rpush_notifications" WHERE (delivered = 'f' AND failed = 'f' AND (deliver_after IS NULL OR deliver_after < '2014-03-05 14:36:38.238624')) AND (app_id IN (1,2)) (pid:7523)
[2014-03-05 09:36:41.410] [DEBUG] ^[[1m^[[36mSQL (41.7ms)^[[0m  ^[[1mUPDATE "rpush_notifications" SET delivered = 't', delivered_at = '2014-03-05 14:36:41.258814' WHERE "rpush_notifications"."id" IN (187, 188)^[[0m (pid:7523)
请注意,id为188的第一行没有更新,id为187的第一行更新了,并且时间戳与查询匹配。有人知道为什么会这样吗

编辑:
发现代码中存在行锁定条件并在那里进行了修复

发现代码中存在行锁定条件并在删除时修复了问题。

其他WHERE条件如何?身份证只是其中之一…不,就是这样,身份证是他们唯一需要的。经过进一步的测试,第二条语句似乎总能在188的插入完成之前执行。。。当他们调用第二个语句时,188还没有保存,这有可能吗?但不知怎的,第一个语句知道了,第二个语句调用了
id  | delivered |        delivered_at        | failed |         failed_at          
-----+-----------+----------------------------+--------+----------------------------
 188 | f         |                            | f      | 
 187 | t         | 2014-03-05 14:36:41.258814 | f      | 
 186 | t         | 2014-03-05 14:33:55.845077 | f      |