Oracle中序列(SEQUENCE)的使用一例
曾经在触发器中使用序列(SEQUENCE):
create or replace trigger TRI_SUPPLIER
before insert on SUPPLIER
for each row
begin
select seq_supid.NEXTVAL into:new.supcode from dual;
select seq_supid.CURRVAL into:new.supID from dual;
end;
显然,忽略了并发,修改后如下:
create or replace trigger TRI_SUPPLIER
before insert on SUPPLIER
for each row
declare v_supval number(20);
begin
select seq_supid.NEXTVAL into v_supval from dual;
select v_supval into:new.supcode from dual;
select v_supval into:new.supID from dual;
end;
再附上一个使用触发器防止重复记录的例子:
CREATE OR REPLACE TRIGGER TRI_ASSETPROJECT
BEFORE INSERT ON ASSETPROJECT
FOR EACH ROW
DECLARE V_PROJECTID NUMBER(20) :=0;
V_TMP VARCHAR2(100) :='';
BEGIN
SELECT :NEW.PROJECTCODE INTO V_TMP FROM DUAL;
dbms_output.put_line(V_TMP);
SELECT PROJECTID INTO V_PROJECTID FROM ASSETPROJECT WHERE PROJECTCODE = :NEW.PROJECTCODE and rownum=1 ;
IF (NVL(V_PROJECTID,0)<=0) THEN ----如果不存在编码记录
begin
SELECT SEQ_ASSETPROJECTID.NEXTVAL INTO :NEW.PROJECTID FROM DUAL;
dbms_output.put_line('New ID ');
end;
ELSE --如果已存在编码记录
begin
--SELECT :V_PROJECTID INTO:NEW.PROJECTID FROM DUAL;
RAISE_APPLICATION_ERROR(-20001, '项目编码已存在,不允许重复添加!');
dbms_output.put_line('Old ID ');
end;
end if;
END;
Oracle中序列(SEQUENCE)的使用一例的更多相关文章
- Oracle数据库中序列(SEQUENCE)的用法详解
Oracle数据库中序列(SEQUENCE)的用法详解 在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了 ...
- ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍
如果我是C罗 原文 ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍 sequence在ORACLE中应用十分广泛,就是序列号的意思,会自动增加指定变数,如逐次增加1或者2或者 ...
- Oracle中序列的操作以及使用前对序列的初始化
Oracle中序列的操作以及使用前对序列的初始化 一 创建序列 create sequence myseq start with 1 increment by 1 nomaxvalue minva ...
- oracle中创建sequence指定起始值
oracle中创建sequence指定起始值 DECLARE V_Area_Id NUMBER; BEGIN SELECT MAX(T.Area_Id)+10 INTO V_Area_Id FROM ...
- Oracle中序列(Sequence)详解
一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用途是生成表的主键值,可以在插入语句中引用,也 ...
- oracle数据库--序列(sequence)
一个问题: 在某张表中,存在一个id列(整数),我们希望在添加记录的时候,该列从1开始,自动的增长,怎么处理? 解决方式:oracle是利用"序列"(sequence)来完成的. ...
- oracle中序列,同义词的创建
序列 序列是用来生成唯一,连续的整数的数据库对象.序列通常用来自动生成主机那或唯一键的值.序列可以按升序排序, 也可以按降序排序.例如,销售流水表中的流水号可以使用序列自动生成. 创建序列语法: cr ...
- oracle中序列的使用
转载:http://blog.csdn.net/java958199586/article/details/7360152 序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l 自动提 ...
- Oracle 中序列使用
转 https://www.cnblogs.com/21-forever/p/11265924.html 序列: 1.Oracle是不支持自增长的: ①.序列是用于生成唯一.连续序号的对象: ②.序列 ...
随机推荐
- 《java JDK7学习笔记》之跨平台与路径设置
Platforms表示Solaris.Linux.Windows各种操作系统平台,在这些平台上架构了java Virtaul Machine,简称JVM,Java虚拟机. Java虚拟机可以让java ...
- Android中ListView错位布局实现(无聊向)
由于某些原因,需要个错位的页面,在网上找不到好的例子,试着动手写了写. 不考虑配色的完成图如下: 首先考虑的是,listview每一行左右都有可能缩进. 先假设一行的布局就是ImageView,Tex ...
- Struts2工作原理
Struts2工作原理 Struts2请求响应流程: 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller.ActionProxy.Acti ...
- MMORPG大型游戏设计与开发(游戏服务器 游戏场景 概述 updated)
我们在玩游戏的时候,我们进入游戏后第一眼往往都是看到游戏世界中的场景,当然除了个别例外,因为那些游戏将游戏场景隐藏了起来,如文字游戏中的地点一样.既然我们接触了游戏世界的核心,那么作为核心的场景又包括 ...
- CSS样式----图文详解(二):css属性
主要内容 CSS的单位 字体属性 文本属性 背景属性 列表属性 盒子模型 定位属性:position.float.overflow.z-index等 导航栏的制作 鼠标的属性cursor 滤镜的介绍 ...
- Flex(flash)检测摄像头的3种状态(是否被占用,没安装摄像头,正常)
在视频程序的编写过程中,我们经常要使用摄像头,在使用摄像头前有必要对摄像头的现有状态做个检测: 1.被占用 2.没安装摄像头 3.正常 camera=Camera.getCamera(); ...
- 升级Flash Builder 4.6中的Flash Player版本
测试有效 本人按此方法升级到了flash player 15 Adobe自发布Flash Builder 4.6后,就暂停了Flash Builder新版本的发布.但AIR和FlashPlayer版本 ...
- JavaScript语言精粹笔记
JavaScript语言精粹笔记 掌握语言的每个特性可以让你出风头,但是并不推荐,因为一部分的特性带来的麻烦可能远超本身的价值.正如书中所言,坏的材料并不能雕刻出好的作品,要成为一名更好的程序员,要取 ...
- 《ASP.NET MVC 5 高级编程(第5版)》
第1章.入门 本章主要内容: ASP.NET MVC 5概述 其应用程序的创建方法 其应用程序的及结构 概述:将MVC设计模式应用于ASP.NET框架 ASP.NET 1.0支持两层抽象: Syste ...
- domReady方法(dom加载完成执行回调)
var domReady = function( fn ) { var isReady = false, ready = function(){ if(!isReady){ typeof fn === ...