手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Oracle数据库设置主键自增

时间:2024-10-15 14:32:34

在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增。下面我就为大家介绍两种实现主键自增的方法。 两种方法的基础都有一个概念就是序列(sequence)的概念,一种是利用序列和显式调用的方式去实现主键自增,另一种是通过序列和触发器(trigger)来实现主键自增。

工具/原料

Oracle数据库

编译工具

利用序列主键自增

1、第一步、创建表 --创建表,主键为IDCREATE TABLE YFF ( ID INT primary key , NAME VARCHAR2(10));

Oracle数据库设置主键自增

2、--创建序列 create sequence seq_yff start with 1 increment by 1;--创建序列的格式 create sequence序列名称start with开始数字increment by增长数字minvalue最小值maxvalue最大值cycle 是否循环(cycle为循环,nocycle为不循环)nocache 不使用缓存

Oracle数据库设置主键自增

3、关于序列的其他重要操作 --查询序列(利用nextval查询序列下一次的值) select seq_yff.nextval from dual;--查询序列的格式 Select 又挨喁钒序列名.nextval from dual (dual为伪表,当我们不需要从具体的表来取得表中数据,而是单纯地得到一些我们想得到的信息,就可以使用伪表)注意:这里第一次执行这条查询语句得到结果为1,再执行得到2,第一种实现主键自增的方法就是使用序列名.nextval使得值一直增加的 --删除序列() DROP SEQUENCE seq_yff;注意:序列和表不是连接在一起的,当序列创建之后,用在这个表之后,我将该表删除,但是序列的值还是停留在之前的值上,所以需要注意这个问题

4、第三步、利用序列+显式化调用 进行自增 insert into YFF values (seq_yff.nextval,'张三'); insert into YFF values (seq_yff.nextval,'张三'); select * from YFF;

Oracle数据库设置主键自增

利用序列+触发器调用 进行主键自增

1、第一步、在表和序列创建好之后,创建触发器--创建触发器 create or replace trigger tri_yff_insert before insert on YFF referencing old as old new as new for each row begin select seq_yff.nextval into :new.ID from dual; end tri_yff_insert; --创建触发器格式create [or replace] tigger 触发器名触发时间 触发事件on 表名 [for each row]begin pl/sql语句end

Oracle数据库设置主键自增

2、解释上面的触发器语句 create or replace trigger tri_yff_insert 创建触发器并命名 before insert on YFF 触发时间为向表YFF中插入时 referencing old as old new as new for each row 对表的每一行触发一次,否则只对整表执行一次 begin select seq_yff.nextval into :new.ID from dual; end tri_yff_insert;

3、第二步、插入数据 insert into YFF (ID,Name) values(100,'李四'); insert into YFF (Name) values('李四'); --不管给不给主键赋值,这里触发器都会使得主键值为序列的值

Oracle数据库设置主键自增
© 手抄报圈