所以我有这个存储过程来插入一条消息到我的数据库。我想阻止用户在短时间内发布重复邮件,无论是意外还是故意(无论是延迟连接还是垃圾邮件发送者)。防止在SQL Server中的重复记录
这是插入语句是什么样子:
IF NOT EXISTS (SELECT * FROM tblMessages WHERE message = @message and ip = @ip and datediff(minute,timestamp, getdate()) < 10)
BEGIN
INSERT INTO tblMessages (ip, message, votes, latitude, longitude, location, timestamp, flags, deleted, username, parentId)
VALUES (@ip, @message, 0, @latitude, @longitude, @location, GETDATE(), 0, 0, @username, @parentId)
END
你可以看到我检查,看看是否同一用户已张贴在10分钟内相同的消息,如果没有,我将它张贴。我仍然看到昨天有一个重复。当我检查数据库中两条消息的时间戳时,它们完全一样,直到第二条,所以我猜测每次插入时运行这个“存在”检查时,都返回空,所以它们都插入正确(在基本上相同的时间)。
什么是我可以防止这种情况发生的正确方法?
这会识别一条消息在同一时间发布? – slandau
@slandau:是的,会的。看到我的更新请 – gbn
我认为这是最好的解决方案。 - 我不需要提出错误的权利?我可以平静地回滚? – slandau