想实现ID自增,新建了sequence、trigger,如下:
create sequence t_skyquality_seq
minvalue 1
NOMAXVALUE
increment by 1
start with 1
NOCYCLE
cache 20;CREATE or replace TRIGGER t_skyquality_trigger
BEFORE INSERT ON t_skyquality FOR EACH ROW WHEN (new.id is null)
begin
select t_skyquality_seq.nextval into: new.id from dual;
end;
在随便插入个数据时,就出现了“通信通道的文件结束”错误,最后pl/sql死掉。。
create sequence t_skyquality_seq
minvalue 1
NOMAXVALUE
increment by 1
start with 1
NOCYCLE
cache 20;CREATE or replace TRIGGER t_skyquality_trigger
BEFORE INSERT ON t_skyquality FOR EACH ROW WHEN (new.id is null)
begin
select t_skyquality_seq.nextval into: new.id from dual;
end;
在随便插入个数据时,就出现了“通信通道的文件结束”错误,最后pl/sql死掉。。
解决方案 »
- 新手求解 ORA-00933: SQL 命令未正确结束
- 问下,,ORACLE里面什么时候用COMMIT啊?
- 行级触发器。当新增时,字段改变
- user1中建的过程,在user2中执行,如何让它此时只处理user2中的数据
- 特急的 语句转化 select 'insert into xh_2 values('''+cast(pk_data as varchar)+''','''+pk_psndoc+''','''+year
- distinct和group by的区别
- 取两个表的条件对一个表进行更新
- 怎么在RedHat linux 9安装oracle9i?
- 我现在只会oracle的pl/sql编程,不知道好不好找工作?
- 因为ocp 053补考贵,想换便宜点的机构可以吗 ?高人指点
- 关于数据库将临时表中数据导入正式表中问题
- ORA-12541错误 TNS没有监听程序
BEFORE INSERT ON t_skyquality FOR EACH ROW)
begin
直接用t_skyquality_seq.nextval 替换new.id 不就可以了么,为什么要 select t_skyquality_seq.nextval into: new.id from dual;呢?
end;
:new.id:=t_skyquality_seq.nextval;检查下alert_<SID>.log日志文件中是否存在ORA-07445错误。
行:5
文本::new.id:=t_skyquality_seq.nextval;错误:PL/SQL: Statement ignored
行:5
文本::new.id:=t_skyquality_seq.nextval;
”,不能这样用。。
这句改成
select t_skyquality_seq.nextval into :new.id from dual;
注意冒号位置