如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现。不过对于这个数据库的常用功能,我们还是有办法实现的。这里将展示使用触发器 来实现主键自增。
1.准备
创建UserInfo表,结构如下:
CREATE TABLE UserInfo
(
id NUMBER (10 ) NOT NULL ,
username VARCHAR2(15 ) NOT NULL ,
password VARCHAR2(15 ) NOT NULL ,
CONSTRAINTS PF_UserInfo PRIMARY KEY (id) --创建主键约束
);
创建一个用于自增的序列(requence)
CREATE SEQUENCE Tab_UserInfo_Sequence
START WITH 1
MINVALUE 1
MAXVALUE 999999999
INCREMENT BY 1
CACHE 20 ;
2.触发器
CREATE OR REPLACE TRIGGER Tig_UserInfo_Insert
BEFORE INSERT ON UserInfo --插入动作触发器
FOR EACH ROW WHEN (new.id IS NULL ) --id值为null 时触发
BEGIN
select Tab_UserInfo_Sequence.nextval into :new.id from dual;
END ;
3.测试用例
INSERT INTO UserInfo(username, password) VALUES ('aaa' , '111' );
INSERT INTO UserInfo(username, password) VALUES ('bbb' , '222' );
INSERT INTO UserInfo(username, password) VALUES ('ccc' , '333' );
查看表数据,结果如下:
4.END
至此,使用触发器设置主键自增已完成。