注册 登录
编程论坛 SQL Server论坛

SQL server 如何做到表的自检查 ,例如检查主键是否唯一,以及检查每次插入的行数是否满足某一范围值

aotoman 发布于 2016-06-01 21:43, 3068 次点击

主要问题是这个样的:
       每天我都要向一个表中插入数据,我想判断每天插完数据后,这一天表中插入数据的条目是否会在某两个数值范围内,如果插入数据的总条目不在这个数据范围内就报错给我发邮件。我想这个过程通过SSIS进行.

不知道有没有高手可以实现这样的功能么?

例如,今天向表A插入了1000条数据,但是 我设的插入条数目范围是 2000-3000这是 就在SSIS里面 通过发送错误邮件给我。
1 回复
#2
mywisdom882016-06-02 09:23
你表中要有1个字段,记录每次插入的时间,如字段 时间 datetime,
在每次插入数据前,先检查数据库中和本次插入数据的日期相同的记录总数,如果在你的设置范围内,你就执行插入动作,否则,就报错误。

SQL 的时间,是带日期和时分秒的,要用函数CONVERT()只取前10位的日期,如
declare @dt datetime
set @dt=getdate()
CONVERT(VARCHAR(10),@dt,120)
查询相同记录总数这个 CONVERT(VARCHAR(10),@dt,120),@dt就是你本次要插入的数据的时间,CONVERT(VARCHAR(10),时间,120)的时间,就是你表A的字段
select count(*) as 总数 from 表a where CONVERT(VARCHAR(10),时间,120)=CONVERT(VARCHAR(10),@dt,120)

由于你插入数据前要查询数据,所以用存储过程来处理,比较方便。
以上是大概的思路。

1