说不如做 create trigger tr_a on 表A for insert as update 表b set b1=b1+1 if (select top 1 a1 from inserted) = 0 update 表b set b2=b2+1 BEGIN WAITFOR TIME '00:00' insert 表b(b1,b2) values(0,0) END
--测试数据 create table 表a (a1 int) create table 表b (b1 int, b2 int) insert 表b select 1,2 union all select 3,4 --建立触发器 把时间改下 比如现在22:34 你改到叫他22:35触发要不需要等好久 create trigger tr_a on 表A for insert as update 表b set b1=b1+1 if (select top 1 a1 from inserted) = 0 update 表b set b2=b2+1 BEGIN WAITFOR TIME '22:33' insert 表b(b1,b2) values(0,0) END --查一下 select * from 表a select * from 表b ----结果是----- /* 表A a1 0表B b1 b2 2 3 4 5 0 0 (所影响的行数为 1 行) (所影响的行数为 3 行) */
另外写一个存储过程也算是个好办法!!就相当于把我那个分开写也行!! ---第一个是插入的 create trigger tr_a on 表A for insert as update 表b set b1=b1+1 if (select top 1 a1 from inserted) = 0 update 表b set b2=b2+1---第二个是等时间到再插入的 create trigger tr_a1 on 表A for insert if (select top 1 a1 from inserted) = 0 BEGIN WAITFOR TIME '22:33' insert 表b(b1,b2) values(0,0) END
WAITFOR TIME '00:00' ?抬杠不是?在触发器里这样做会出问题吧?嘿嘿嘿我觉得我是清楚楼主意思的,可我又懒得写代码,怕别人不清楚,所以要求楼主说清楚点。表B应该有一个日期字段。是吧,楼主?
create trigger tr_a on 表A
for insert
as
update 表b
set b1=b1+1
if (select top 1 a1 from inserted) = 0
update 表b
set b2=b2+1
BEGIN
WAITFOR TIME '00:00'
insert 表b(b1,b2)
values(0,0)
END
create table 表a
(a1 int)
create table 表b
(b1 int,
b2 int)
insert 表b
select 1,2 union all
select 3,4
--建立触发器 把时间改下 比如现在22:34 你改到叫他22:35触发要不需要等好久
create trigger tr_a on 表A
for insert
as
update 表b
set b1=b1+1
if (select top 1 a1 from inserted) = 0
update 表b
set b2=b2+1
BEGIN
WAITFOR TIME '22:33'
insert 表b(b1,b2)
values(0,0)
END
--查一下
select * from 表a
select * from 表b
----结果是-----
/*
表A
a1
0表B
b1 b2
2 3
4 5
0 0
(所影响的行数为 1 行)
(所影响的行数为 3 行)
*/
---第一个是插入的
create trigger tr_a on 表A
for insert
as
update 表b
set b1=b1+1
if (select top 1 a1 from inserted) = 0
update 表b
set b2=b2+1---第二个是等时间到再插入的
create trigger tr_a1 on 表A
for insert
if (select top 1 a1 from inserted) = 0
BEGIN
WAITFOR TIME '22:33'
insert 表b(b1,b2)
values(0,0)
END
服务器系统时间到达午夜12点后,自动在表B中增加一条记录,并令表B的字段B1,B2的值为0这个强烈建议建一个job来做,job就是做这个的,放到触发器里执行非常不对头。
——(1)启用SQL Server Agent服务,用SQL作业的调度实现;
——(2)WAITFOR TIME '00:00' EXEC ……也行啊!均可。条条大道通罗马!