Oracle 触发器和序列的创建和使用 (自动增长列)
-- 创建序列 create sequence 序列名称 start with 1 -- 起始值 increment by 1 -- 增量 maxvalue 99999999 -- 最大值 nocycle -- 达到最大值后是否重新计算,当前为不重新计算,cycle为重新计算 nocache; -- 不要缓存,容易跳号
-- 创建触发器 CREATE OR REPLACE TRIGGER 触发器名称 BEFORE INSERT ON 表名称 FOR EACH ROW BEGIN SELECT 序列名称.NEXTVAL INTO :NEW.字段名称 FROM DUAL; END;
说明:需要先建个序列,再建与此对应的触发器。最好每张表都这么建。 每次插入记录时就会自动向标识列中插值了。
测试代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
--创建表create table t_windturbine_day(id number primary key,createdate nvarchar2(25),windturbinecode varchar(5),indicode number(5),indivalue varchar2(10),passflage INTEGER default(0) );--创建序列create sequence seq_windturbine_day increment by 1 start with 1000000 nomaxvalue nominvalue nocache ;--创建触发器create or replace trigger tr_windturbine_day before insert on t_windturbine_day for each rowbegin select seq_windturbine_day.nextval into :new.id from dual; end;--插入数据insert into t_windturbine_day(createdate,windturbinecode,indicode,indivalue)values('20131108',18,10002,'3.95');--通过这种方式插入,步长为1,但是id一次长2(第3条数)。为什么?我认为是触发器增长了1,--seq_windturbine_day.nextval又增长了1所导致的。不知道对不对?insert into t_windturbine_day(id,createdate,windturbinecode,indicode,indivalue)values(seq_windturbine_day.nextval,'20131108',18,10002,'3.95');--查询数据select * from t_windturbine_day t; |
测试结果:

Oracle 触发器和序列的创建和使用 (自动增长列)的更多相关文章
- oracle 触发器,序列,索引
oracle 触发器,序列,索引 --1,触发器 ----trigger /*触发器是一种特殊的存储过程,它与数据表紧密联系,用于保护表中的数据, 当一个定义了特定类型触发器的基表执行插入.修改或删除 ...
- [转]连续创建多个Oracle触发器失败,单个创建才成功的解决方法
连续创建多个Oracle触发器失败,单个创建才成功的解决方法 1.当我连续执行创建多个触发器时,总是报编译通过,但存在警告或错误.如下: create or replace trigger t ...
- Oracle创建自动增长列
前言: Oracle中不像SQL Server在创建表的时候使用identity(1001,1)来创建自动增长列,而是需要结合序列(Sequences)和触发器(Triggers)来实现 创建测试表 ...
- 使用sql语句创建修改SQL Server标识列(即自动增长列)
一.标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点:1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统 ...
- Oracle数据库自动增长列的实现过程
1.创建序列 -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 in ...
- 连续创建多个Oracle触发器失败,单个创建才成功的解决方法
当用到自增序列,需要用到触发器的时候,当我连续执行创建多个触发器时,总是报编译通过,但存在警告或错误. ---.应用信息 drop table app_info cascade constraints ...
- oracle 序列 + 触发器 实现 ID自动增长
1.创建序列 create sequence emp_sequence increment by ----每次增加几个 minvalue ----最小值为1 nomaxvalue----不限制最大值 ...
- Oracle中的序列
序列是什么? 序列是用来生成唯一.连续的整数的数据库对象.序列通常用来自动生成主键或唯一键的值.序列可以按升序排列,也可以按照降序排列. 其实Oracle中的序列和MySQL中的自增长差不多一个意思. ...
- Oracle视图,序列及同义词、集合操作
一.视图(重点) 视同的功能:一个视图其实就是封装了一个复杂的查询语句.1.创建视图的语法:CREATE VIEW 视图名称 AS 子查询 范例:创建一个包含了20部门的视图CREATE VIEW e ...
随机推荐
- Makefile知识点总结
1.=,:=,+=区别 = 是最基本的赋值 := 是覆盖之前的值 ?= 是如果没有被赋值过就赋予等号后面的值 += 是添加等号后面的值 .“=” make会将整个makefile展开后,再决定变量的值 ...
- 算法实践--不相交集合(Disjoint Sets)
什么是不相交集合(Disjoint Sets) 是这样的一组set,任何元素最多只能在一个set中 至少支持查找Find和合并Union操作 实现方式(基于树) 每个set都是一棵树 每棵树都由树的根 ...
- ubuntu下的Nessus插件更新
00x1: 记录下nessus插件离线更新,免得每次度娘我Nessus是放在虚拟机里面. 00x2: nessus 插件更新地址: https://plugins.nessus.org/v2/offl ...
- win10安装git
Git官网下载:https://git-scm.com/download 选择win系统,下载.然后选择安装路径,一路next.安装成功后 打开cmd 输入 git --version 配置信息 设置 ...
- 实验五:Xen环境下多虚拟机的桥接配置
实验名称: Xen环境下多虚拟机的桥接配置 实验环境: 这里我们首先需要有一台已经安装好的虚拟机机,能够正常运行,且网卡正常,如下图: 实验需求: 进行虚拟机的复制,并添加新的网桥配置,然后将两台虚拟 ...
- java效率取随机不重复数
//效率取随机不重复数 public int[] takeRandom(int num) { Random rd = new Random(); int[] rds = new int[num];// ...
- spring 入门demo
相关资源 官网地址:http://projects.spring.io/spring-boot/ 创建maven项目 勾选箭头处,创建一个简单的项目 填写groupId和artifactId,点击确 ...
- spring 之 BeanDefinition & BeanDefinitionParser
xml bean factory 的解析过程的 堆栈大概是这样的: at org.springframework.beans.factory.xml.NamespaceHandlerSupport.f ...
- leetcode15
class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); Li ...
- 安装和激活Office 2019
有条件请支持正版!相比费尽力气找一个可能不太安全的激活工具,直接买随时随地更新的Office 365确实是最好的办法.暂时没有经济实力的,可以看看这篇文章.下载OTP工具 首先到Office Tool ...