--如果要在删除数据时,检测数据,自动取消报警,则加多一个删除检查的触发器:
create trigger tr_报警检查_删除 on 表
for delete
as
if (select count(*) from 表)<10000
if exists(select 1 from 报警信息表 where 超出范围=1 and 表名='表')
update 报警信息表 set 超出范围=0 where 表名='表'
go
--创建一个表,记录数据是否超出范围的情况
create table 报警信息表(表名 sysname,超出范围 bit)
go
--然后在要做报警检测的表中写触发器:
create trigger tr_报警检查 on 表
for insert
as
if (select count(*) from 表)>=10000
begin
declare @a bit
select @a=超出范围 from 报警信息表 where 表名='表'
if @@rowcount=0
insert 报警信息表 values('表',1)
else if @a=0
update 报警信息表 set 超出范围=1 where 表名='表'
end
go
数据库管理程序检测时用这样的语句:
select * from 报警信息表 where 超出范围=1
--简单的示例
create trigger tr_insert on 表
for insert
as
if (select count(*) from 表)>=10000
exec master..xp_cmdshell 'net send "客户端的计算机名" "记录已经到1万条"',no_output