1.invalid username/password 无效用户
java连接oracle数据库时,不可使用system账号(猜测可能系统账号都无法使用)。创建其他用户,授予权限。
2.表或视图不存在
原sql
更改为(添加实例名instance)
3.oracle序列.nextval
nextval与序列关联,表示下一个,如:
创建一个序列seq_1:#序列一般表示第几行,起标识作用
create sequence di_msg_s increment by 1 start with 1
查询序列
select di_msg_s.nextval from sys.dual;
在表中使用此序列:
create or replace trigger for_di_localhost_after
after insert or update or delete on employee
for each row
begin
if inserting then
insert into DI_MSG(ID,TABLENAME,CHANGETYPE,CHANGEDATE,PKFIELD1,STATUS) values
(di_msg_s.nextval,'employee','I',sysdate,:new.userid,0);
end if;
if updating then
insert into DI_MSG(id,TABLENAME,CHANGETYPE,CHANGEDATE,PKFIELD1,STATUS) values
(di_msg_s.nextval,'employee','U',sysdate,:old.userid,0);
end if;
if deleting then
insert into DI_MSG(id,TABLENAME,CHANGETYPE,CHANGEDATE,PKFIELD1,STATUS) values
(di_msg_s.nextval,'employee','D',sysdate,:old.userid,0);
end if;
end;
4.oracle触发器中的NEW和Old关键字说明(:new :old)
oracle默认的 用old代表老数据 new代表新数据 不过二者在使用时是有限制的
insert时 只有new 没有old
delete时 只有old 没有new
update时 二者都可用
这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在,且update语句两个都有,而insert只有:new ,delete 只有:old