Oracle中自动创建自增主键的方法(oracle创建自增主键)

Oracle数据库是全球最大的商业数据库管理系统,它提供丰富的功能,其中之一就是自定义创建自增主键。Oracle中自动创建自增主键有两种方法,第一种用序列实现,第二种用触发器实现。

## 方法一:使用序列实现Oracle自增主键

序列是Oracle中一种用于生成唯一整数的可重复使用的对象,它可以使我们创建主键。要创建Oracle中自增主键,首先需要创建一个序列以表示自增主键,如下所示:

CREATE SEQUENCE seq_id
START WITH 1
INCREMENT BY 1
NOCYCLE NOCACHE;

然后,在创建或修改表定义时,我们可以使用上面的序列(seq_id)为主键来创建一个自增的主键,如下所示:

CREATE TABLE Employee
(Em_Id int NOT NULL PRIMARY KEY,
Em_Name varchar2(30),
Em_Salary int,
Em_Address varchar2(50),
CONSTRAINT em_id_pk PRIMARY KEY (em_id)
USING INDEX
(CREATE UNIQUE INDEX em_id_uqi
ON EMPLOYEE (em_id)
)
USING DEFAULT
ORA_HASH ('Em_Id', 65536)
USINGINITIALLY
DEFAULT VALUE seq_id.NEXTVAL
);

## 方法二:使用触发器实现Oracle自增主键

在Oracle中,我们还可以使用触发器来实现自增主键,首先需要在表中创建一个行号列来表示自增主键,如下所示:

CREATE TABLE Employee
(em_id int NOT NULL,
em_name varchar2(30),
em_salary int,
em_address varchar2(50),
CONSTRAINT em_id_pk PRIMARY KEY (em_id)
);

然后,在表中创建一个触发器以在插入行时自动更新em_id列,如下所示:

CREATE OR REPLACE TRIGGER trg_em_id
BEFORE INSERT ON employee
FOR EACH ROW
BEGIN
:new.em_id := trg_em_id_seq.NEXTVAL;
END;

最后还需要一个对应的序列来替代触发器以使em_id列以唯一可靠的方式自动自增。正如上面第一种方法中那样,我们需要定义一个序列来帮助我们创建自增主键:

CREATE SEQUENCE trg_em_id_seq
START WITH 1
INCREMENT BY 1
NOCYCLE NOCACHE;

通过以上两种方法:使用序列或触发器,我们可以在Oracle中自动创建自增主键,实现主键的自动自增,节省不少的工作量。


数据运维技术 » Oracle中自动创建自增主键的方法(oracle创建自增主键)