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中自动创建自增主键,实现主键的自动自增,节省不少的工作量。