ORA-00947及解决

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');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值