首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果从同一位置(IP)起1分钟内存在多个记录,则执行存储过程。

如果从同一位置(IP)起1分钟内存在多个记录,则执行存储过程。
EN

Stack Overflow用户
提问于 2019-11-22 16:49:41
回答 2查看 125关注 0票数 0

每当将记录插入到我的数据库中时,就会触发触发器,如果数据库上满足条件,该触发器将执行存储过程以发送电子邮件警报。如果在一定时间内数据库中存在多个记录,则需要执行该过程(如果在同一IP和登录类型的1分钟内存在5条记录)

代码语言:javascript
复制
IF (SELECT IP, COUNT(*) AS Counted
    FROM LOGS  
     AND Logs.TYPE = 'Visitor' 
    HAVING Counted >= 5
       AND IP > 1 
      AND ACCESSEDTIME > DATEADD(minute, -1, GetDate())) > 0
BEGIN
    -- my stored procedure
END
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-22 17:09:39

我想可能是这样的,但在你的例子中,不太清楚.

代码语言:javascript
复制
IF exists (Select ip, count(*) as counted from logs
where logs.type='Visitor' and
ACCESSEDTIME > DATEADD(minute, -1, GetDate())
Group by ip having count (*) >= 5)

然后你可以每分钟执行这个测试,但是它不是很好。另外,您可以使用分钟作为Group by子句的术语进行测试,从访问时间提取它(这取决于您的产品)。

票数 0
EN

Stack Overflow用户

发布于 2019-11-22 17:14:27

请参阅下面的查询。细节不太清楚,所以你可能需要做一些调整。

代码语言:javascript
复制
IF exists (SELECT IP,
COUNT(ip) AS Counted    
FROM LOGS     
where  Logs.TYPE = 'Visitor'   
group by ip
HAVING COUNT(ip) >= 5      
AND IP > 1 AND DATEDIFF(MINUTE, accessedtime, 
getdate())) =1
BEGIN
-- my stored procedure
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58998529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档