想用Myeclipse中hibernate的反向工程映射Oracle中的表,id生成选择了Sequence.映射失败。然后看数据库中的表,发现id不能自动生成,于是参照网上的方法在Oracle中新建了一个sequence,新建了一个触发器。CREATE SEQUENCE test_sequence //序列名
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE;create or replace trigger sysrole_id //触发器名
before insert on "NUMBERS"."TESTS"----(tests为表名,NUMBERS为用户名)
for each row----触发每一行
begin
select test_sequencee.nextval into :new.id from dual;
end;
运行之后,在表里插入数据,id仍然不能自动增长。还报出不能为空的错误。
急等!!!!!!!
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE;create or replace trigger sysrole_id //触发器名
before insert on "NUMBERS"."TESTS"----(tests为表名,NUMBERS为用户名)
for each row----触发每一行
begin
select test_sequencee.nextval into :new.id from dual;
end;
运行之后,在表里插入数据,id仍然不能自动增长。还报出不能为空的错误。
急等!!!!!!!
解决方案 »
- oracle db link 关联查询 很慢的问题
- oracle 我在导出想什么表、用户时总是出现“没有登录批处理权限”的权限错误?
- 00942 table or view does not exist
- 求集群命令
- 求助:根据不同的记录写不同的条件
- 有两个问题:一个DB_LINK的问题,另一个是关于如何判断与远程数据库通讯时网络是否好的
- 突然想到个问题,oracle里的存储过程是保存在哪里的?表空间里么??查了书也没查到
- imp小问题!
- 【高分求助】ASP.NET+Oracle8的论坛
- 一个关于Update的SQL语句,请高手指点
- 改了IP,OracleDBConsoleOrcl服务无法启动
- 如何将一台机子上的oracle数据库完整地转移到另一台机子上
2、试试这样呢:
create or replace trigger sysrole_id //触发器名
before insert on NUMBERS.TESTS----(tests为表名,NUMBERS为用户名)
for each row----触发每一行
begin
select test_sequence.nextval into :new.id from dual;
end;
before insert on "TEST2"
for each row
begin
select "EMP_SEQ".nextval into :NEW.TEXTID from dual;
end;create sequence EMP_SEQ
minvalue 1
maxvalue 9999999999
start with 10
increment by 1
cache 20;我是参照网上的写的。后来发现问题出在我以前错误的触发器一直没删。删了以后就可以用了。。
谢谢各位帮忙啊!多谢!刚刚参加工作第一次用Oracle做项目,难哦