本文共 961 字,大约阅读时间需要 3 分钟。
在实际项目开发过程中,设计数据库表时经常遇到需要主键自增的场景。那如何实现Oracle的主键自增呢,这里我们记录一种最常用的方式:sequence + trigger。
就是利用Oralce的序号和触发器来实现字段的自增,下面直接来看一个完整的例子。
这里我们简单创建一张表做例子,其中表中的id字段就是我们后面准备用来作为自增的字段。
create table T_EMP( ID NUMBER not null, EMP_CODE VARCHAR2(64), EMP_NAME VARCHAR2(64));
这里创建自增序列,用于后面和上表的关联。
CREATE SEQUENCE T_EMP_SEQUENCE MINVALUE 1 --最小值 NOMAXVALUE --不设置最大值 START WITH 1 --从1开始计数 INCREMENT BY 1 --每次加1 NOCYCLE --一直累加,不循环 NOCACHE; --不建缓冲区
创建触发器,把表和序列关联起来,并设定每当表中新增数据的时候触发。
代码如下,
CREATE OR REPLACE TRIGGER T_EMP_TRIGGER BEFORE INSERT ON T_EMP FOR EACH ROW WHEN(NEW.ID IS NULL)BEGIN SELECT T_EMP_SEQUENCE.NEXTVAL INTO:NEW.ID FROM dual;END;
上面sequence和trigger都创建好之后,就可以添加数据测试了。这里我们直接insert几条数据,注意看id字段的变化就可以了。
INSERT INTO T_EMP (EMP_CODE, EMP_NAME)VALUES ('zhangsan', '张三');INSERT INTO T_EMP (EMP_CODE, EMP_NAME)VALUES ('lisi', '李四');INSERT INTO T_EMP (EMP_CODE, EMP_NAME)VALUES ('wangwu', '王五');
我们看下结果,
从上图看出,已经实现表中id字段的自增,大功告成。
转载地址:http://uqoji.baihongyu.com/