steam想申明库存量,不晓得在哪里去增设,那个出口处是稍稍有点儿深,由此可见毕竟也很单纯,一起来看一看什么样操作方式。操作方式方式01登入steam后,点选街道社区旁的对个人......
2024-02-05 540
在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增。下面我就为大家介绍两种实现主键自增的方法。
两种方法的基础都有一个概念就是序列(sequence)的概念,一种是利用序列和显式调用的方式去实现主键自增,另一种是通过序列和触发器(trigger)来实现主键自增。
第一步、创建表 --创建表,主键为ID
CREATE TABLE YFF (
ID INT primary key ,
NAME VARCHAR2(10)
);
--创建序列
create sequence seq_yff
start with 1
increment by 1;
--创建序列的格式
create sequence序列名称
start with开始数字
increment by增长数字
minvalue最小值
maxvalue最大值
cycle 是否循环(cycle为循环,nocycle为不循环)
nocache 不使用缓存
关于序列的其他重要操作
--查询序列(利用nextval查询序列下一次的值)
select seq_yff.nextval from dual;
--查询序列的格式
Select 序列名.nextval from dual
(dual为伪表,当我们不需要从具体的表来取得表中数据,而是单纯地
得到一些我们想得到的信息,就可以使用伪表)
注意:这里第一次执行这条查询语句得到结果为1,再执行得到2,第一种实现主键自增的方法就是使用序列名.nextval使得值一直增加的
--删除序列()
DROP SEQUENCE seq_yff;
注意:序列和表不是连接在一起的,当序列创建之后,用在这个表之后,我将该表删除,但是序列的值还是停留在之前的值上,所以需要注意这个问题
第三步、利用序列 显式化调用 进行自增
insert into YFF values (seq_yff.nextval,'张三');
insert into YFF values (seq_yff.nextval,'张三');
select * from YFF;
第一步、在表和序列创建好之后,创建触发器
--创建触发器
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
解释上面的触发器语句
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;
第二步、插入数据
insert into YFF (ID,Name) values(100,'李四');
insert into YFF (Name) values('李四');
--不管给不给主键赋值,这里触发器都会使得主键值为序列的值
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
steam想申明库存量,不晓得在哪里去增设,那个出口处是稍稍有点儿深,由此可见毕竟也很单纯,一起来看一看什么样操作方式。操作方式方式01登入steam后,点选街道社区旁的对个人......
2024-02-05 540
操作方式方法01【辅助widget】多种辅助工具相连接两个功能键的可同时按【Shift】加此功能键挑选出1、正方形、圆锥选框辅助工具 【M】 2、终端辅助工具 【V】 3、截叶......
2024-02-05 480
操作方式01文档格式难题qq肖像最合适用jpeg文档格式的相片,若是相片有透明化地下通道,能选用png文档格式上载。 02大小不一难题若是相片极重也可能将引致上载失利,检......
2024-02-05 403