DbVisualizer:Oracle触发器,解决ORA-04098: 触发器 'USER.DECTUSERTEST_TRI' 无效且未通过重新验证

我没有用orcal的管理工具,而是用的DbVisualizer 9.5.2,管理数据库。

场景:需要在oracle里面实在自增字段,在网上一搜一堆文档,然后自己就找了一段自己写如下:

drop table userTest;
create table userTest(
id number(10) not null,
name varchar2(20) primary key,
sex varchar2(2)
);
drop sequence userTest_seq;
create sequence userTest_seq
minvalue 1
maxvalue 99999999
increment by 1
start with 1
nocycle
nocache
noorder;

create or replace trigger userTest_tri
before insert on userTest
for each row
BEGIN
SELECT userTest_seq.NEXTVAL INTO :NEW.ID FROM DUAL
// :NEW.ID := NEXT_ID; --:NEW表示新插入的那条记录
// end ;
END;

insert into userTest(name) values ('name');

一运行就抛出下面的错误:

[Code: 4098, SQL State: 42000]  ORA-04098: 触发器 'TIANJING.USERTEST_TRI' 无效且未通过重新验证

解决方案:

首先查看该表的触发器:

 

然后选中查看详情:

查看详情的时候,发现触发器里面有错,然后修改并保存:

好了,然后直接运行:

insert into userTest(name) values ('name');

数据库里面的字段自动增加了~~

原文地址:https://www.cnblogs.com/enternal07/p/6762752.html