记录卷上的条件SQL

时间:2014-04-08 16:04:58

标签: sql-server

我需要设置"警告" (如果在1小时内插入记录,则超过10条记录)将发送电子邮件。 我正在考虑在INSERT触发器中执行此操作,但我不清楚检查该条件(或其语法)的最佳方法是什么。

由于

2 个答案:

答案 0 :(得分:2)

我认为触发器和审核表是最好的方法。我要做的是以下几点:

在名为CreateDT

的表中添加一列(datetime类型)

您可以在列中添加默认值GETDATE()。

然后在外部流程中,您可以执行以下

之类的选择
 SELECT COUNT(*) 
 FROM TABLE
 WHERE CreateDT > dateadd(hour,datediff(hour,0,datediff(hour,-1,getdate())),0)
   and CreateDT  < dateadd(hour,datediff(hour,0,@datetime),0)

这将检查先前的小时数。

要检查过去24小时的计数,您可以获得这样的列表

SELECT HOUR(CreateDT), COUNT(*)
FROM (
       SELECT CreateDt
       FROM TABLE
       WHERE CreateDT > dateadd(day,-1,getdate())
     ) T
GROUP BY HOUR(CreateDT)

答案 1 :(得分:1)

假设你已经在桌面上创造了时间

Create Trigger trig_CheckRecordCount
ON TableName
For Insert 
as
Begin

    IF( (select COUNT(*)
    from TableName
    where CreatedOn >
         (
    Select DATEADD(HOUR,-1, CreatedOn)
    from inserted))>10)
    begin
        //call a stored procedure to send email
    end
end