使用Oracle实现自动增长主键(oracle设置主键自增)

Oracle中可以使用序列对象(Sequence Object)实现自动增长的主键。

首先,我们有必要创建一个序列对象,这个步骤可以使用Oracle数据库自带的dbms_sequence包。 例如创建一个名为PK_SEQ的序列:

“` sql

CREATE SEQUENCE pk_seq

START WITH 10000

INCREMENT BY 1

MINVALUE 10000

NOMAXVALUE

NOCYCLE

CACHE 20;


上述代码实现了主键从10000开始,每次递增1,不存在最大值,也不存在循环值,缓存20个值的序列。

序列创建完毕后,就可以使用简单的SELECT语句来获取序列的下一个值:

```sql
SELECT pk_seq.nextval FROM DUAL;

另外,序列也可以被用在列的定义中,可以使用如下代码实现一个自动递增的主键列:

“`sql

CREATE TABLE employees(

emp_id number primary key,

first_name VARCHAR2(20),

last_name VARCHAR2(20),

salary NUMBER

);

ALTER TABLE employees

ADD (emp_id number GENERATED BY DEFAULT AS IDENTITY

start with 10000

increment by 1 primary key);


使用上述代码,当新行插入时,emp_ID列将由序列pk_seq自动生成,而无需显式插入任何值。

最后,我们还可以使用触发器(triggers)也能实现自动增长的主键,例如:

```sql
CREATE or REPLACE TRIGGER gen_employee_id
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
SELECT pk_seq.nextval INTO :NEW.emp_id FROM dual;
END;

当然,使用触发器来实现自增主键,并不总是一个好主意,它可能会影响数据库性能。

综上,使用Oracle实现自动增长主键,最常用的方法是使用序列对象,当然也可以通过触发器实现,但这并不总是一个最优的性能选择。


数据运维技术 » 使用Oracle实现自动增长主键(oracle设置主键自增)