我创建了一个系统,每天通过 SMS 向我们的客户发送一些信息。因为发送 SMS 的过程可能需要一段时间,这是由多个进程完成的,每个进程发送有限数量的 SMS。当一个进程读取许多 pohne nubers 的记录(比如说 1000 个)来发送短信时。我想标记这 1000 条记录,其他进程也不会读取这些记录。
Select Top(1000) ID, Number from Phones where isactive = 1 and isverified = 1
我需要一些代码来做这样的事情:
update Phones, set ReadTime = getdate() where
(以上选择)
现在我想更新ReadTime
这些记录的列getdate()
以确保其他调度进程不会再次读取它们(我设置日期时间标志而不是位标志的原因是某些 SMS 发送可能会失败,这样我能看懂哪些是很久以前读过但没有更新发送时间的)
在发送短信后标记它们(无论如何都应该写发送时间)将无济于事,因为将处理发送短信的预定任务将一次读取所有 1000 条记录,并且可能会有其他进程读取的记录但尚未标记(因为尚未发送 SMS)。