oracle中实现自增id

在一些数据库(例如mysql)中,实现自增id只要在建表的时候指定一下即可,

但是在oracle中要借助sequence来实现自增id,

要用上自增id,有几种方式:

1.直接在insert语句中使用sequence的nextval。

2.在建表时为字段设置default,这种方式我还没测试。

3.使用触发器,关于触发器的方式,从别人那得到了一个示例,暂且先贴到这里作为备忘。我觉得如果default方式如果可用的话,会比使用触发器的方式简单。

以下是触发器方式相关的代码:

CREATE TABLE STUDENT
(
ID INT NOT NULL,
NAME VARCHAR2(4000) NOT NULL,
PRIMARY KEY(ID)
)
TABLESPACE MYDB;
 
--创建自增ID,名称为:表名_字段名_SEQ
CREATE SEQUENCE sTUDENT_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
 
 
-- 为Insert操作创建触发器,无需在SQL语句里写NEXTVAL,名称为表名_INS_TRG
CREATE OR REPLACE TRIGGER sTUDENT_INS_TRG BEFORE INSERT ON STUDENT FOR EACH ROW WHEN(NEW.ID IS NULL)
BEGIN
SELECT STUDENT_ID_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;

未完待续

猜你喜欢

转载自www.cnblogs.com/vanwoos/p/9224509.html