Sql代码 TableA( id, type,--类型 plandate--计划时间,varchar(10) ) TableB( Fid,--外键,和TableA中的ID关联 realdate--实际日期,varchar(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 cwhere a.realdate>b.plandate and a.fid=b.idand a.fid=c.fid)=1begin Update br Set br.type='10' From TableA br , Inserted ins Where br.id=ins.fidend end
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
create or replace trigger trigger_temp after update
on TableB
as
begin
DECLARE @realdate_old date,@realdate _new date
SELECT @realdate_old=realdate from deleted ----获取修改前的
SELECT @realdate_new =realdate FROM inserted
if(:@realdate_new< @realdate _old) then
begin
update TableA a set a.type = 10 where a.id = @realdate_new;
end;
end if;
end trigger_temp;
九州编程
TA贡献1785条经验 获得超4个赞
create or replace trigger trigger_temp after update
on TableB
FOR EACH ROW
begin
if(:new.realdate < old.realdate ) then
begin
update TableA a set a.type = 10 where a.id = :new.Fid;
end;
end if;
end trigger_temp;
- 2 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消