oracle11g自增主键
时间: 2023-09-03 16:15:48 浏览: 225
在 Oracle 11g 中,可以通过使用序列(Sequence)和触发器(Trigger)的方式实现自增主键的功能。
首先,需要创建一个序列,例如:
```
CREATE SEQUENCE seq_name
START WITH 1
INCREMENT BY 1
MAXVALUE 999999999
MINVALUE 1
NOCACHE
NOCYCLE;
```
其中,seq_name 是序列的名称,START WITH 指定序列的起始值,INCREMENT BY 指定序列的增量,MAXVALUE 和 MINVALUE 分别指定序列的最大值和最小值,NOCACHE 表示不使用缓存,NOCYCLE 表示序列不循环。
然后,在表中定义一个主键列,并使用序列作为默认值,例如:
```
CREATE TABLE table_name (
id NUMBER(10) PRIMARY KEY DEFAULT seq_name.NEXTVAL,
...
);
```
最后,创建一个触发器,在插入数据时自动获取序列的下一个值并插入表中,例如:
```
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
SELECT seq_name.NEXTVAL INTO :new.id FROM dual;
END;
```
其中,trigger_name 是触发器的名称,BEFORE INSERT 表示在插入数据之前触发,FOR EACH ROW 表示对每一行数据都执行触发器中的代码。在触发器中使用 SELECT 语句获取序列的下一个值,并将其赋值给插入数据的主键列。
这样,每次插入数据时,主键列都会自动获取序列的下一个值,实现了自增主键的功能。
阅读全文