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