ORA-00947及解决

来源:互联网 发布:淘宝返利是怎么弄的 编辑:程序博客网 时间:2024/05/21 14:45

oracle 中插入数据其中表tab的第一个字段 Id 是自动生成的,即用sequence和trigger共通生成的现在把这个实现过程列出来

1:创建表sys2_klx(id,sysnm,dwdm,jydm,jymc);

2:创建sequence以便于自动生成id:详见语法

CREATE SEQUENCE  "SYS2_KLX_0"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE  ORDER  NOCYCLE ;

3:创建Id自动生成时的触发器:

CREATE OR REPLACE TRIGGER "SYS2_KLX_TRIG" BEFORE INSERT ON "SYS2_KLX" FOR EACH ROW

 WHEN (new.ID is null)

 BEGIN  

     SELECT "SYS2_KLX_0".NEXTVAL INTO :NEW."ID" FROM DUAL;  

 END;

4:测试生成过程:

 insert into sys2_klx values('abc','swdm','jydm','jymc');

上面语句运行时会出现“ORA-00947”的错误,原因是此时的insert要指明对应的列名才可以

修改为

 insert into sys2_klx (sysnm,dwdm,jydm,jymc) values('abc','swdm','jydm','jymc');