一个触发器问题

wellbright 2009-07-17 02:02:03
我想写个触发器,实现删除记录时,数据库首先把记录插入到另一个表中
触发器如下:

CREATE TRIGGER TR_SHD_DP6
NO CASCADE BEFORE DELETE ON TEMP
REFERENCING OLD AS o
FOR EACH ROW MODE DB2SQL
WHEN (o.ppp=10000)
insert into TEMP2 select A,B,C from TEMP where a=o.a

上面的代码不能通过,不知道为什么?高手帮帮忙,谢谢!
...全文
35 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wellbright 2009-07-17
  • 打赏
  • 举报
回复
谢谢啦!
chenjialin2000 2009-07-17
  • 打赏
  • 举报
回复
这个我也不知道,用的次数不是很多。上网查查吧。
chenjialin2000 2009-07-17
  • 打赏
  • 举报
回复
CREATE TRIGGER TR_SHD_DP6
AFTER DELETE ON TEMP
REFERENCING OLD_TABLE AS o
FOR EACH ROW MODE DB2SQL
insert into TEMP2 select A,B,C from o where o.ppp=10000;
这样总行了吧。
问题出在WHEN (o.ppp=10000) 这里,具体怎么了。我也不清楚。你这个触发器要求也不高,就按照上面的写吧
wellbright 2009-07-17
  • 打赏
  • 举报
回复
sorry!可以了,我刚才改错了
高手,问一下:
REFERENCING OLD_TABLE AS o 和REFERENCING OLD AS o
有什么区别呀?
wellbright 2009-07-17
  • 打赏
  • 举报
回复
REFERENCING OLD_TABLE AS o
建触发器时根本通不过呀
chenjialin2000 2009-07-17
  • 打赏
  • 举报
回复
哪里不行,我也学习学习
wellbright 2009-07-17
  • 打赏
  • 举报
回复
高手在那里呢,急呀!解决下吧,谢谢!
wellbright 2009-07-17
  • 打赏
  • 举报
回复
这样不行
chenjialin2000 2009-07-17
  • 打赏
  • 举报
回复
你只要改一点就可以了,把OLD改成OLD_TABLE就可以了,WHEN (o.ppp=10000) 这个应该是你的过滤条件,只有在o.ppp=10000时才执行下面的语句。具体如下
CREATE TRIGGER TR_SHD_DP6
AFTER DELETE ON TEMP
REFERENCING OLD_TABLE AS o
FOR EACH ROW MODE DB2SQL
WHEN (o.ppp=10000)
insert into TEMP2 select A,B,C from o;
这样就可以了
wellbright 2009-07-17
  • 打赏
  • 举报
回复
我想确定将被删除的这条记录呀,a是表temp的主键
chenjialin2000 2009-07-17
  • 打赏
  • 举报
回复
当然没有了,已经被你删除了,怎么会还有,改成insert into insert into TEMP2 select A,B,C from o 试试。不过不明白你的o.a是个什么条件。
wellbright 2009-07-17
  • 打赏
  • 举报
回复
改为after就通过,但是不能实现要求呀,没有数据被复制到TEMP2中
CREATE TRIGGER TR_SHD_DP6
AFTER DELETE ON TEMP
REFERENCING OLD AS o
FOR EACH ROW MODE DB2SQL
WHEN (o.ppp=10000)
insert into TEMP2 select A,B,C from TEMP where a=o.a
wellbright 2009-07-17
  • 打赏
  • 举报
回复
提示:SQL0797N 不受支持的触发SQL语句定义了触发器
Mr_Bean 2009-07-17
  • 打赏
  • 举报
回复
insert into TEMP2 select A,B,C from TEMP where a=o.a and o.ppp=10000

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧