oracle中写触发器

钢蛋J 2018-08-02 10:52:15
oracle中写行级触发器,触发器都生成了,但是在使用的时候报触发器未生效;
CREATE
OR REPLACE TRIGGER ZDRCFQ AFTER INSERT ON RY_ZDRKXX FOR EACH ROW

WHEN ( NEW.GKZTDM = '3' AND NEW.CZBS < '3' AND NEW.GMSFHM IS NOT NULL )
BEGIN
INSERT INTO RY_BQB ( BQBH, RYBH, GMSFHM, XXBH, XXLB, RYBQDM, BZ, CZDW,CZR, CZSJ, CZBS, RYBQLB )
VALUES
(
(SELECT sys_guid () FROM dual ),: NEW.RYBH,: NEW.GMSFHM,: NEW.ZDRKBH,
'重点人口',
'01',: NEW.BZ,: NEW.CZDW,: NEW.CZR,: NEW.CZSJ,: NEW.CZBS,
'0'
);
END;

第一次写oracle触发器。大神帮我看看有什么错
...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
verejava 2018-08-03
  • 打赏
  • 举报
回复
yaiger 2018-08-03
  • 打赏
  • 举报
回复
To 5楼

楼主写的when应该是紧跟着For each row的,他多了个空行。不需要用if
jdsnhan 2018-08-03
  • 打赏
  • 举报
回复
1、少了declare
2、WHEN ( NEW.GKZTDM = '3' AND NEW.CZBS < '3' AND NEW.GMSFHM IS NOT NULL ) 换成if
3、上面的判断语句应该在begin后面
4、SELECT sys_guid () FROM dual ) 改成 直接引用 sys_guid()
卖水果的net 2018-08-02
  • 打赏
  • 举报
回复
两个表的ddl 贴一下。
yaiger 2018-08-02
  • 打赏
  • 举报
回复
触发器编译成功了?
我看少了declare
yaiger 2018-08-02
  • 打赏
  • 举报
回复
报出无效且未通过重新验证 , 看不懂
具体的报错信息呢?
钢蛋J 2018-08-02
  • 打赏
  • 举报
回复
报出无效且未通过重新验证

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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