有下面的一个表,数据如下 ,想写一个触发器,当插入一条数据或改变表的[限期]时,列[整理后的限期]跟着
变,如公司1的5天跟7天都为整理后限期的7天,用CASE WHEN ,要判断公司公司号     限期        整理后限期
 1       5天            7天
 2       5天
 1       7天            7天
 2       7天
 1       15天
 2       13天
 1       17天

解决方案 »

  1.   


    --没大搞明白lz的意思
    create trigger tri_name on tb for update,insert
    as
    begin
         --如公司1的5天跟7天都为整理后限期的7天
         if exists(select 1 from inserted where 公司=1 and (期限=5 or 期限=7))
            update TB set 整理后期限=7 where 公司=1 and (期限=5 or 期限=7)
    end
      

  2.   

    CREATE trigger triI_tb
    on tb
    for insert
    as
    if @@rowcount>0 
    begin
    set nocount on
    set ansi_warnings off

    update tb set 整理后限期=7
    where 公司号=1 and 限期 in(5,7)endCREATE trigger triu_tb
    on tb
    for update
    as
    If update(限期)
    begin
    set nocount on
    set ansi_warnings off

    update tb set 整理后限期=7
    where 公司号=1 and 限期 in(5,7)end
      

  3.   

    CREATE TRIGGER tr_UpdateDueTime
       ON  dbo.tb
    FOR  INSERT
    AS 
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;    -- Insert statements for trigger here
    UPDATE t1 SET t1.整理后限期=t2.限期
    from tb t1
    INNER JOIN INSERTED t2 ON t1.公司号=t2.公司号 AND t1.限期=t2.限期

    END
    GOCREATE TRIGGER tr_UpdateDueTime1
       ON  dbo.tb
    FOR  UPDATE
    AS 
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;    -- Insert statements for trigger here
        IF UPDATE(限期)
    UPDATE t1 SET t1.整理后限期=t2.限期
    from tb t1
    INNER JOIN INSERTED t2 ON t1.公司号=t2.公司号 AND t1.限期=t2.限期

    END
    GO
      

  4.   

     
    现在写的大约是这样子了,不知能不能一个TRIGGER写好.像oracle那样if inserting begin那样子