oracle 数据库没有像 MYSQL一样有 自动ID增值 的功能,如要实现可以用触发器。
首先就是建立一个序列,序列有有自动增值的功能,再建立一个触发器。
如:
建立一个序列
CREATE SEQUENCE auto_seq
minvalue 1 -- 最小值
increment by 1 -- 每次增加值数
nocache -- 不启用缓存
nocycle -- 不循环;
建立一个触发器
CREATE OR REPLACE trigger auto_id_tri
before insert on pjsh_person -- before 表示插入新数据时执行
for each row -- 每次插入数据到pjsh_person表时执行下面的oracle 语句
begin
select auto_seq.nextval into :NEW.ID from dual;
end;
auto_id_tri 触发器名
auto_seq.nextval 提取auto_seq 序列的值
:NEW.ID ID为要添加的主键列名
pjsh_person 要添加自动ID值的表名。
至此,每次插入数据时ID值都不用插入,触发器会自动插入,如果手动插入ID值也会被触发器覆盖掉。
首先就是建立一个序列,序列有有自动增值的功能,再建立一个触发器。
如:
建立一个序列
CREATE SEQUENCE auto_seq
minvalue 1 -- 最小值
increment by 1 -- 每次增加值数
nocache -- 不启用缓存
nocycle -- 不循环;
建立一个触发器
CREATE OR REPLACE trigger auto_id_tri
before insert on pjsh_person -- before 表示插入新数据时执行
for each row -- 每次插入数据到pjsh_person表时执行下面的oracle 语句
begin
select auto_seq.nextval into :NEW.ID from dual;
end;
auto_id_tri 触发器名
auto_seq.nextval 提取auto_seq 序列的值
:NEW.ID ID为要添加的主键列名
pjsh_person 要添加自动ID值的表名。
至此,每次插入数据时ID值都不用插入,触发器会自动插入,如果手动插入ID值也会被触发器覆盖掉。