房天下 > 房天下问答 > 业主生活 > 其他
  • SQL触发器的问题

    下面是我做的触发器,一共两个表,一个是借书2,另一个是可借。表借书2内有:借出日期,还书日期,ID。表可借内有:可借天数,ID我要求表可借内的可借天数已经编辑好,当我在镖借书2输入ID、借出日期,还书日期会把借出日期与可借天数相加自动输出现在这个触发器输出不了,不清楚为什么。。。请各位高手帮帮我!CREATE trigger [trigger_计算日期] on [dbo].[借书2]after insertasbeginset nocount ondeclare @号号 chardeclare @借出 datetimedeclare @还书 datetimedeclare @temp intselect @借出 = inserted.[借出日期]from insertedselect @temp= 可借.[可借天数] from 可借 where ID = @号号set @还书 = DATEADD(DAY,@temp,@借出)update 借书2set 借书2.[还书日期]=@还书where 借书2.[ID]=@号号end

    提问者:624xn

    发布于2011-02-10

共1个回答
  • ww1476946145 丨Lv 4
    我建立了一个触发器,虽然触发器是正确的,但每次执行的时候都会报 Can't update table '借书2' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.我的触发器是这样的,有两种方法但都会在执行添加时报错,并不实现更改功能。①DELIMITER | CREATE TRIGGER testref AFTER INSERT ON 借书2FOR EACH ROW BEGINupdate `借书2` set `借书2`.`还书日期`=DATE_ADD(new.借出日期, INTERVAL (select 可借天数 from 可借 where id=new.id) DAY)where `借书2`.`id`=new.id;END;②DELIMITER | CREATE TRIGGER testref AFTER INSERT ON 借书2FOR EACH ROW BEGINinsert into 借书2 values (new.id, new.借出日期, DATE_ADD(new.借出日期, INTERVAL (select 可借天数 from 可借 where id=new.id) DAY));END;这两个触发器都可以成功建立,但不能被正确运行,后来我只能用两条语句来实现:insert into 借书2 values (id, new.借出日期,''); //其中的id保存在变量中update 借书2 set `还书日期`=DATE_ADD(借出日期, INTERVAL (select 可借天数 from 可借 where id=变量id) DAY) where id=变量id;希望能对你有所帮助,还有我用的数据库是mysql,可能和你当前所用的数据库不一样哦。
    +10 2011-02-11 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。