我有一个通知表,其中包含 id、type、user_id 和 unseen 列。
要获得新的通知计数,我使用:
SELECT count(1)
FROM notifications
WHERE user_id=123 AND unseen=1
为了只标记新通知,我使用:
UPDATE notifications
SET unseen=0
WHERE user_id=123 AND unseen=1
但是这个更新查询有时会出错。我想知道,这样做的正确方法是什么?
编辑:
ERROR DESC
Transaction (Process ID 68) was deadlocked on lock; 与另一个进程通信缓冲区资源,并已被选为死锁牺牲品。重新运行事务。