需求描述:有以下两个表

Sql代码  

  1. TableA(  

  2. id,  

  3. type,--类型  

  4. plandate--计划时间,varchar(10)  

  5. )  

  6.   

  7. TableB(  

  8. Fid,--外键,和TableA中的ID关联  

  9. realdate--实际日期,varchar(10)  

  10. )  

TableA的记录会和TableB中的记录一一对应。

当TableB中的字段realdate发生改变时(insert的时候不算),判断realdate的值是否小于TableA中plandate的的值,如果小于,执行触发器,将TableA中的type赋值“10”;如果不小于,则不执行触发器。
请教一下如何写这个语句,刚学习触发器,希望能回复完整的sql,谢谢!


问题补充:自己学着写了一个,测试没发现什么问题
--创建触发器
Create  Trigger t_TableB_bykmd
      On TableB
      for Update
    As
      if Update(realdate)
      begin
           
        if(select COUNT(*) from TableB a, TableA b,inserted c
where a.realdate>b.plandate  and a.fid=b.id
and a.fid=c.fid)=1
begin
  Update br  Set br.type='10'
          From TableA br , Inserted ins
          Where br.id=ins.fid
end
  end


catspeake
浏览 123回答 2
2回答

暮色呼如

create or replace trigger trigger_temp after updateon TableBasbeginDECLARE @realdate_old date,@realdate _new date&nbsp;&nbsp; SELECT @realdate_old=realdate&nbsp; from deleted ----获取修改前的&nbsp;&nbsp; SELECT @realdate_new =realdate&nbsp; FROM insertedif(:@realdate_new< @realdate _old) then&nbsp;&nbsp;&nbsp; begin&nbsp;&nbsp;&nbsp; update TableA a set a.type = 10 where a.id = @realdate_new;&nbsp;&nbsp;&nbsp; end;end if;end trigger_temp;

九州编程

create or replace trigger trigger_temp after updateon TableBFOR EACH ROWbeginif(:new.realdate < old.realdate ) then&nbsp;&nbsp;&nbsp; begin&nbsp;&nbsp;&nbsp; update TableA a set a.type = 10 where a.id = :new.Fid;&nbsp;&nbsp;&nbsp; end;end if;end trigger_temp;
打开App,查看更多内容
随时随地看视频慕课网APP