Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1913221
  • 博文数量: 219
  • 博客积分: 8963
  • 博客等级: 中将
  • 技术积分: 2125
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-19 12:48
个人简介

文章分类

全部博文(219)

文章存档

2021年(1)

2020年(3)

2015年(4)

2014年(5)

2012年(7)

2011年(37)

2010年(40)

2009年(22)

2008年(17)

2007年(48)

2006年(31)

2005年(4)

分类: Oracle

2008-08-19 11:57:51

今天用写了一个 trigger, 在 dbvis 中运行没有错误, 编译也没错, 但运行时报错如下:

09:52:52 [INSERT - 0 row(s), 0.047 secs] [Error Code: 4098, SQL State: 42000] ORA-04098: 触发器 'OAS.MIGUSER_BASEINFO_USERID' 无效且未通过重新验证

很是奇怪. 我把 trigger 的执行内容全部删除也会报错.

创建 trigger 语句如下:

create or replace trigger OAS.MIGUSER_BASEINFO_USERID
BEFORE INSERT or update ON OAS.MIGUSER_BASEINFO
REFERENCING NEW AS newRow OLD AS oldRow
FOR EACH ROW
BEGIN
    if updating then
        if :oldRow.BUSINESS_STATUS = 'N' and :newRow.BUSINESS_STATUS != 'N' then
              select sysdate into :newRow.activeDate from dual
        end if
    elseif inserting then
       SELECT SQ_AUTOINC_MIGUSER_BASEINFO.NEXTVAL INTO :newRow.USERID FROM dual
       if :newRow.BUSINESS_STATUS != 'N' then
             select sysdate into :newRow.activeDate from dual
       end if
    end if
   EXCEPTION
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise

       RAISE
END MIGUSER_BASEINFO_USERID

 
编译 trigger 语句如下:

ALTER TRIGGER OAS.MIGUSER_BASEINFO_USERID COMPILE;
commit;

后来把问题转给了我们的 DBA, 他把每个单独语句后面加上了分号, 然后就成了. 但我在 DBVIS 中运行如果带分号就会报错. 很是奇怪. 我想大概是 dbvis 的问题.

 

 

阅读(18931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~