美文网首页我爱编程
Oracle主键自增

Oracle主键自增

作者: baobaodz | 来源:发表于2018-03-18 21:26 被阅读43次

在设置主键自增时有几种方法,今天介绍其中一种方法:sequence+trigger

1.创建表
create table tbl_card         --创建校园卡表
(
id int primary key,           --序号
card_num varchar2(20),        --校园卡号
card_holder varchar2(10),     --持卡人姓名
card_balance number           --校园卡余额
);
2.创建序列
create sequence cardID_seq --创建校园卡ID序列
start with 1               --序列从1开始
increment by 1             --每次增加1
minvalue 1                 --最小值为1
nomaxvalue                 --不设最大值
nocache                    --没有缓存
nocycle                    --一直累加不循环
3.创建触发器
create or replace trigger cardID_trigger   --创建校园卡ID触发器
before insert on tbl_card                  --在插入表之前
for each row                               --对于每一列
begin                                      --要做的操作
    select cardID_seq.nextval into :new.id from dual; --将下一个ID序列插入作为新的序号
end;
4.输入数据测试
insert into tbl_card (card_num,card_holder,card_balance)
values (1102015001,'翠花',75);
insert into tbl_card (card_num,card_holder,card_balance)
values (1102015002,'如花',122);
insert into tbl_card (card_num,card_holder,card_balance)
values (1102015003,'花花',46);
select * from tbl_card;
查询表结果

至此,主键自增实现。

遇到的问题
在创建触发器的时候报错 报错:权限不足

显示权限不足,原因是在创建用户时,没有赋予其创建触发器的权限,来到DOS界面输入:

sqlplus /nolog
conn as sysdba // 以管理员身份登录
grant create trigger(触发器) to baobao;
赋予用户创建触发器权限

回到Oracle再次执行就OK啦

相关概念
触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。

DML即数据操纵语言,用于让用户或程序员使用,实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)和更新(插入、删除、修改)。
DML触发器即由DML语句激发,其触发事件包括insert(插入)、update(更新)和delete(删除)。无论哪种触发事件,都能为每种触发事件创建before触发器和after触发器。如可以在表上建立一个before insert 语句,表示在insert事件发生之前采取行动。

cache缓存

如果指定cache值,Oracle就可以预先在内存里面放置一些Sequence,这样存取的快些。cache里面的取完后,Oracle自动再取一组到cache。使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的Sequence就会丢失。举个例子:比如你的sequence中cache 100,那当你sequence取到90时突然断电,那么在你重启数据库后,sequence的值将从101开始。

最后,还有另一种方法可以设置自增,以后讲到。 学以致用

相关文章

  • 第一次商讨

    1. 数据库 Mysql Oracle 主键,Oracle 用Sequence生成主键,主键唯一,各表共用一个自增...

  • oracle主键自增

    创建序列语法: 创建案例: 创建sequence 使用触发器实现ID递增 创建序列

  • oracle自增主键

    http://www.cnblogs.com/yomho/p/3714574.html

  • Oracle主键自增

    在设置主键自增时有几种方法,今天介绍其中一种方法:sequence+trigger 1.创建表 2.创建序列 3....

  • oracle 主键自增

    第一步 第二步 创建主键seq 第三步 绑定触发

  • oracle之字段自增

    在oracle中,当我们要让主键或者序号自增,然而oracle中没有像mysql那样有自增简单语句。但是我们可以通...

  • Oracle:设置主键自增

    打开navicat,新建查询(注:“表名和字段名分别改成你需要自增的表名和字段名”) 执行完上述代码后,继续执行

  • Oracle实现自增方式:序列+触发器

    Oracle不能像MySQL那样设置主键自增,Oracle用 <序列+触发器>的方式使数据表的一列或多列实现自增 ...

  • 创建主键自增的Oracle数据库表结构

    使用DDL语句创建主键自增的Oracle数据库表结构: CREATE TABLE "SCOTT"."ADMINS"...

  • Navicat for Oracle 设置主键自增

    今天工作的时候,用到了oracle数据库建表,发现navicat中对于oracle的支持没有那个主键自增的按钮,网...

网友评论

    本文标题:Oracle主键自增

    本文链接:https://www.haomeiwen.com/subject/avgrqftx.html