有一个表(T1)中有日期和时间为同一列:2009-9-14 19:55:59
现要做一个触发器向(T1)插入数据时更新数据到(T2),但是要跳过 如果日期(2009-9-4)为星期一和时间(19:55:59)大于20点,小于16点的数据。
能不能实现这样的功能?请手解答,谢谢

解决方案 »

  1.   

    I am not sure whether you want to ensure trigger does not run on Monday between 20:00 and 16:00 (that itself doesn't sound right, do you mean between 16:00 and 20:00 rather than the other way around???)oryou want the trigger not to insert a record from t1 to t2 whenever a datetime field value is Monday between 16:00 and 20:00?If the former, then in your maintenance job, you should add the following script at the beginning:alter table t1 disable trigger [trigger_name]
    and
    alter table t1 enable trigger [trigger_name]
    at the end of your maintenance taskIf the latter, you simply need something like the following in the trigger itself:
    create trigger mytrigger on t1 for insert as
    set nocount on
    set datefirst 1 --set monday to be 1

    insert into t2
    select
    a.*
    from
    inserted a inner join t2 b on
    a.joiningkey=b.joiningkey
    where
    not (datepart(weekday, a.datetimefield)=1 and
    datepart(hour, a.datetimefield) between 16 and 20)
    go
      

  2.   

    create trigger tri_T1
    on T1
    for insert
    as
    begin
    update T2 set .....from inserted
    where datename(weekday,时间列)<>'星期一' and datepart(hour,时间列) not between 16 and 20
    end
      

  3.   

    谢谢,我用你的触发器提示from附近有错误,我修改了一下,如下:alter trigger tri_T1
    on T1
    for insert
    as
    begin
        insert T2 select * from inserted
        where datename(weekday,time)<>'星期一' and datepart(hour,time) not between 16 and 20
    end可以跳过星期一,但是时上的限制不生效,现在想把星期六的一起过滤掉,能不能怎么修改一下来实现?
    谢谢