文档章节

Oracle列自增实现(3)-DEFAULT Values Using Sequences

小强斋太
 小强斋太
发布于 2016/11/09 20:06
字数 343
阅读 7
收藏 0
点赞 0
评论 0

Oracle 12c中,可以使用序列的NEXTVAL and CURRVAL的值作为默认值,来实现列自增!

一、使用序列的NEXTVAL and CURRVAL的值作为默认值

创建序列

CREATE SEQUENCE t1_seq;

建表

CREATE TABLE t1 ( 
id NUMBER DEFAULT t1_seq.NEXTVAL, 
description VARCHAR2(30) 
);

插入数据

INSERT INTO t1 (description) VALUES ('DESCRIPTION only');
INSERT INTO t1 (id, description) VALUES (999, 'ID=999 and DESCRIPTION');
INSERT INTO t1 (id, description) VALUES (NULL, 'ID=NULL and DESCRIPTION');

查询结果

SELECT * FROM t1;

clip_image001

二、默认值明确为非空

创建两个序列

CREATE SEQUENCE default_seq;
CREATE SEQUENCE default_on_null_seq;

建表,col1和col2分别使用上面两个序列的NEXTVAL作为默认值,其中col2 DEFAULT ON NULL

CREATE TABLE t2 (
col1 NUMBER DEFAULT default_seq.NEXTVAL,
col2 NUMBER DEFAULT ON NULL default_on_null_seq.NEXTVAL,
description VARCHAR2(30)
);

插入数据

INSERT INTO t2 (description) VALUES ('DESCRIPTION only');
INSERT INTO t2 (col1, col2, description) VALUES (999, 999, '999,999,DESCRIPTION');
INSERT INTO t2 (col1, col2, description) VALUES (NULL, NULL, 'NULL,NULL,DESCRIPTION');

查询数据,可以看到col2位NULL时候,被默认转换使用了default_on_null_seq.NEXTVAL的

SELECT * FROM t2;

clip_image002

三、例子:主从表的简单例子

CREATE SEQUENCE master_seq;

CREATE SEQUENCE detail_seq;

CREATE TABLE master (

id NUMBER DEFAULT master_seq.NEXTVAL,

description VARCHAR2(30)

);

CREATE TABLE detail (

id NUMBER DEFAULT detail_seq.NEXTVAL,

master_id NUMBER DEFAULT master_seq.CURRVAL,

description VARCHAR2(30)

);

INSERT INTO master (description) VALUES ('Master 1');

INSERT INTO detail (description) VALUES ('Detail 1');

INSERT INTO detail (description) VALUES ('Detail 2');

INSERT INTO master (description) VALUES ('Master 2');

INSERT INTO detail (description) VALUES ('Detail 3');

INSERT INTO detail (description) VALUES ('Detail 4');

SELECT * FROM master;

clip_image003

SELECT * FROM detail;

clip_image004

原文:

DEFAULT Values for Table Columns : Enhancements in Oracle Database 12c Release 1 (12.1)

本文转载自:http://www.cnblogs.com/xqzt/p/4455171.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
Oracle 10G中关于序列使用详解.

Oracle 10G中关于序列使用详解. 数据库设计的三大范式第一条就是独立的表结构中必须有唯一主键来标识表中数据.在以往微软的SQL Server(duo版本)平台上.手动编码实现表中主键.并设定为自增列是...

猴子 ⋅ 2011/11/10 ⋅ 0

用存储过程+触发器实现序列

In MySQL 5.0.10 we now have the functionality to create an automatic sequence generator using a trigger that calls a stored function. You could even have a global sequence if yo......

Bluven ⋅ 2014/04/05 ⋅ 2

oracle的基本语法

1.表和列的命名规则 (1)必须由字母开始,字符长度为1-30个字符,只能包含a-z A-Z 0-9 $ # (2)同一个用户所拥有的对象之间不能重名,不能用oracle服务器的保留字 (3)建议使用描述性的名...

浮云飘飘 ⋅ 2014/04/23 ⋅ 0

Oracle对象下集(序列、同义词、分区表、database link)

本人所有博文纯手码,给个关注或者赞吧!博主:张晨晨QQ:1445696451欢迎随时加Q讨论技术。 一、Oracle的序列 ·序列是用来生成惟一的连续的整数的数据库对象。序列通常可以用来自动生成主键或...

张晨chat ⋅ 05/31 ⋅ 0

Oracle数据库迁移到PostgreSQL/EDB初探

由于某些非技术方面的原因,我们也在搞一些开源数据库引入,替换商业数据库,于是瞄上了PostgreSQL。 PostgreSQL本身的技术不在这里做介绍,虽然国内PostgreSQL没有Mysql那么流行,但是搜索一...

Rocky-Wang ⋅ 2015/04/17 ⋅ 1

ORACLE SQL总结四:视图、序列、索引和同义词

1、序列 1.1 序列的定义和作用 Use the statement to create a sequence, which is a database object from which multiple users may generate unique integers. You can use sequences to ......

yeyelei ⋅ 2012/07/17 ⋅ 0

Oracle 中MERGE语句的用法

MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个...

zh119893 ⋅ 2013/06/20 ⋅ 0

oracle表相关用例和语法

2014-04-12 一.表和列的命名规则 1.必须由字母开始,字符长度为1-30个字符,只能包含a-z,A-Z,0-9,_,$,# 2.同一个用户所拥有的对象之间不能重名,不能用oracle服务器的保留字 3.建议使用描述性...

蓝蝶飞扬 ⋅ 2014/04/13 ⋅ 0

Oracle数据库应用实战

演示环境:CentOS 6.9所用Oracle版本:11g Release 2 Oracle安装 1.软件包下载http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html2.帮助文档http://www.or......

阿拉杜美美 ⋅ 2017/12/09 ⋅ 0

Oralce专题10之Oracle的其他数据库对象

1、Oracle的数据库对象:序列 a、什么是序列? 序列(sequence):是一种用于自动生成唯一数字的数据库对象。主要用于提供主键值。 b、怎样创建序列? 创建序列的语法格式: 示例: c、怎样使...

极客微信条 ⋅ 2017/12/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】

x64: TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 2/1/02 ;.MODEL flat,stdcall x64 not su......

simpower ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

你真的明白RPC 吗?一起来探究 RPC 的实质

你真的明白RPC 吗?一起来探究 RPC 的实质 不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基...

AI9o後 ⋅ 昨天 ⋅ 0

z-index设置失效?

今天碰到了一个问题,就是在给li设置提示框的时候,有用到遮罩效果,本来想把对应的出现在最顶层,可是不管将li设置的z-index值设为多大,li都没有出现在遮罩层之上。 我在网上查了z-index设...

IrisHunag ⋅ 昨天 ⋅ 0

CyclicBarrier、CountDownLatch以及Semaphore使用及其原理分析

CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设...

申文波 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部