oracle设置自动增长序列
我们在用MS SQL Server时,可以为表的主键设置为自动加1的效果;但是在Oracle当中,我们是无法直接设置一个字段为自动加1,需要先建立一个Sequence,然后为这个表创建一个Trigger,具体步骤如下:
1.先建立一个Order表格,用如下SQL语句
create table SCOTT.ORDER
(
ID NUMBER(10) not null,
BUYER CHAR(20) not null,
MERCHANDISE VARCHAR2(50) not null,
QUANTITY LONG not null,
UNITPRICE NUMBER(10,2) not null,
TOTALPRICE NUMBER(20,4),
DESCRIPTION NVARCHAR2(1000),
PRIMARY KEY("ID")
)
2.创建一个序列,从10000开始计数,增量为1
create sequence ORDER_ID
minvalue 1
maxvalue 9999999999999999999999999999
start with 10000 --从10000开始生成序列
increment by 1 --增量为1
cache 20; --预存20个序列值在内存中,这样可以提高访问序列的速度
3.为Order表创建一个before insert的触发器,在插入之前将表order的主键设置为上面的序列值.
CREATE OR REPLACE TRIGGER "ORDER_ID_GENERATOR" BEFORE
INSERT ON "SCOTT"."ORDER" FOR EACH ROW --一定要加上For each row,表示该触发器适应于每一条记录
declare
mid number;
begin
select order_id.nextval into mid from dual; --order_id.nextval是获得上面定义的序列ORDER_ID的下一个值
:new.id:=mid; --将得到的序列值赋给表order的主键id, 可以用":new"引用将要插入的一行数据
end;
这样,当执行插入记录的时候,可以这样写
insert into order(buyer,merchandise,quantity,unitprice)values("ABC","Product_ABC",200,10);
Oracle会调用上面创建的触发器将序列值赋值给主键ID
oracle设置自动增长序列的更多相关文章
- mysql 如何设置自动增长序列 sequence(一)
背景:由于项目需要,必须用mysql设置主键自增长,而且想用字符串的.经过上网查找并且实验,终于做出了一套方案.现在就共享给大家! 解决思路:由于mysql不带sequence,所以要手写的,创建一张 ...
- [转]MySQL如何设置自动增长序列 SEQUENCE
原文地址:https://blog.csdn.net/czbqoo01/article/details/70148516 解决思路:由于mysql不带sequence,所以要手写的,创建一张储存seq ...
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:
Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长: 通过Hibernate注解的方式映射oracel数据库的sequence主键生成器 ...
- Oracle创建自动增长列
前言: Oracle中不像SQL Server在创建表的时候使用identity(1001,1)来创建自动增长列,而是需要结合序列(Sequences)和触发器(Triggers)来实现 创建测试表 ...
- Oracle数据库自动增长列的实现过程
1.创建序列 -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 in ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项
SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...
- Oracle中为表设置自动增长的标识列
-- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 increment ...
- oracle设置自动清理归档日志脚本
设置定时自动清理归档日志脚本 root用户下 [root@localhost ~]# mkdir /nstg [root@localhost ~]# cd /nstg/ [root@localhost ...
- Oracle设置自动递增的方法
1)创建序列: create sequence SEQ_TEST --字段名 minvalue 1 --最小值 maxvalue XXXXX --设置最大值 start wit ...
随机推荐
- vi 和vim 的区别
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.vim的这些优势主要体现在以下几个方面:1.多级撤消我们知道在vi里,按 u只能撤消上次命 ...
- 快速开发 jQuery 插件的 10 大技巧
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了. ...
- linux编译php gd扩展
1 安装gd的依赖包 yum -y install gd gd2 gd-devel gd2-devel zlib freetype 2 安装jpeg: wget http://www.ijg.org/ ...
- jQuery实现表的编辑删除添加(增删改查)🌚
代码 : (用到了bootstrap里面的全局css样式和组件,毕竟一把梭.
- SpringMVC PathVariable和post、get、put、delete请求
1.PathVariable 可以映射URL中的占位符到目标方法的参数中. 2.Rest风格的URL 以CRUD为例: 新增:/order POST 修改:/order/id PUT 获取:/orde ...
- Python入门-数据类型
一.变量 1)变量定义 name = 100(name是变量名 = 号是赋值号100是变量的值) 2)变量赋值 直接赋值 a=1 链式赋值 a=b=c=1 序列解包赋值 a,b,c = 1,2,3 ...
- 从0到1搭建spark集群---企业集群搭建
今天分享一篇从0到1搭建Spark集群的步骤,企业中大家亦可以参照次集群搭建自己的Spark集群. 一.下载Spark安装包 可以从官网下载,本集群选择的版本是spark-1.6.0-bin-hado ...
- 跟我一起读postgresql源码(九)——Executor(查询执行模块之——Scan节点(上))
从前面介绍的可优化语句处理相关的背景知识.实现思想和执行流程,不难发现可优化语句执行的核心内容是对于各种计划节点的处理,由于使用了节点表示.递归调用.统一接口等设计,计划节点的功能相对独立.代码总体流 ...
- C# DataSet数据导入Excel 修正版- .net FrameWork 4.0以上
引入 Microsoft.Office.Interop.Excel.dll 格式:标题加了下划线,单元格内容居中 1 using System; using System.Data; using S ...
- js中的for循环案例
打印99乘法表 for(var x=1; x<=9; x++) { for(var y=1; y<=x; y++) { document.write(y+"*&q ...