以前用的mysql,是有自动递增这个属性的,现在用的orlace,需要建序列来实现递增,这里记录一下:
一、先建一张表(PROJECT_LOGS)
CREATE TABLE "SYSTEM"."PROJECT_LOGS"
( "ID" NUMBER(12,0),
"PROJECT_MONEY" NUMBER(10,2),
"UPDATE_MONEY" NUMBER(10,2),
"USER_ID" NUMBER(12,0),
"CREATE_TIME" DATE DEFAULT sysdate,
"IS_DEL" NUMBER DEFAULT 0
)
数据结构
二、表建好了,我们来建一下序列,我用的是sqldeveloper界面来建:
右键序列文件夹,新建名称自拟,最好是xxx_SEQ,从1开始,每次递增一,最大值我这里默认。缓存按需要自己设置,不循环
CREATE SEQUENCE PROJECT_LOGS_SEQ
INCREMENT BY 1 /*每次加几个*/
START WITH 1 /*从几开始*/
MINVALUE 1 /*最小值*/
NOCACHE/*一直累加,不循环*/;
//测试
INSERT INTO PROJECT_LOGS VALUES(SEQ_PROJECT_LOGS.Nextval,'1','2','3',sysdate,'6');
其实到了这里就实现了递增,只是写sql时要传入id(SEQ_PROJECT_LOGS.Nextval);
三、创建触发器:
创建触发器选择好列名,序列名
CRETE TRIGGER "PROJECT_LOGS_TRG" BEFORE
INSERT ON PROJECT_LOGS FOR EACH ROW WHEN(new.ID is null)
begin
select PROJECT_LOGS_SEQ.nextval into:new.ID from dual;
end;
//测试sql
INSERT INTO PROJECT_LOGS VALUES('','1','2','3',sysdate,'6');
网友评论