oracle LPDA,oracle中自动增长列的设置
例如在表user中将主键uid设为自动增长列:
table: user
column: uid ,定义为主键,int或number
结合sequence和trigger实现id列的值的自动增长:
1、create a sequence for the column `uid` of `user`:
CREATE SEQUENCE seq_user_uid
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
MINVALUE 1 -- 序列最小值,小于或等于start值
-- MAXVALUE 20 -- 累加,最大值20
NOCYCLE -- 一直累加,不循环
--CYCLE -- 循环 ,达到最大值20后重新开始,违反唯一约束,不适用于主键
CACHE 10 -- 缓存序列个数,有助于提高效率,但可能造成跳号。
2、Create a trigger for table `user`:
create or replace trigger user_trg
before insert on user
for each row --行级的trigger
declare
tmpNum number;
begin
SELECT seq_user_uid.nextval INTO tmpNum FROM dual;
--:new.uid := 'u' || lpda(tmpNum,7,'0');
:new.uid := tmpNum;
end user_trg;
-------------------------//--:new uid := 'u' || lpda(tmpNum,7,'0');可能有问题,触发器可能会报错,
或者直接写成
create or replace trigger user_trg
before insert on user
for each row --行级的trigger
begin
SELECT seq_user_uid.nextval INTO :new.uid FROM dual;
end user_trg;
3、插入值时必须将列名都写上。
一旦定义了seq_user_uid,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
seq_user_uid.CURRVAL
seq_user_uid.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); //empseq.nextval, 添加自增列
SELECT empseq.currval FROM DUAL; //返回最后一个自增值
Alter Sequence
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence
再 re-create .
Alter sequence 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
可以很简单的Drop Sequence
DROP SEQUENCE order_seq;
oracle LPDA,oracle中自动增长列的设置相关推荐
- Oracle利用序列实现自动增长列
在SQL Server以及MySql中都有相应的自动增长列类型,而Oracle中则没有此类型,那如果要实现自动增长列需要怎么办呢. 我们可以利用序列来实现.插入数据时候,可以像sql以及mysql一样 ...
- oracle查询一列汇总,【学习笔记】Oracle数据筛选 查找oracle所有表中的特定列中的某些数据...
天萃荷净 开发DBA反映,根据需求需要查找Oracle数据库中所有表中特定的列中指定的关键词的数据,和数据内容和数量 找出数据库中所有表表中REMARK列中含有WN.wind.wlr中表名和数量 de ...
- 2019-7-26 [MySQL] 安装与介绍 语句分类/语法 数据类型 DDL数据定义:创建/查看/删除/使用 DML数据操作:增删改 主键约束 自动增长列 非空约束 默认值 Navicat
文章目录 0.知识回顾 1.数据库介绍 1.1 数据库概述 1.1.1 什么是数据库 1.1.2 什么是数据库管理系统 1.1.3 数据库与数据库管理系统的关系 1.2 数据库表 1.3 表数据 1. ...
- MySQL中自动增长类型要求
自动增长(auto_increment) 1.一个表中只能有一个列为自动增长: 否则会报错Incorrect table definition; there can be only one auto ...
- SQL获取刚插入的记录的自动增长列ID的值
假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: i ...
- 数据的完整性(正确性和准确性):分类-实体完整性:主键约束、唯一约束、自动增长列。域完整性-非空约束、默认值约束、检查约束。引用完整性-一对一、一对多、多对多
文章目录 1 数据的完整性作用 2 完整性的分类 2.1 实体完整性 2.1.1 主键约束 primary key 2.1.2 唯一约束 unique 2.1.3 自动增长列 auto_increme ...
- HTML如何实现单元格自动编号,如何在Excel中自动为列编号?
如何在Excel中自动为列编号? 您是否曾经想过在Excel中对列进行编号? 本教程将讨论一些对列进行编号的方法. 通过公式= ROW()自动编号一列 如果要根据行号对列进行编号,可以键入此公式 ...
- Pg sql 创建自动增长列及修改序列当前值
Pg 数据库创建自动增长列需要使用sql创建序列,然后再将序列绑定到对应的字段上. 创建序列的sql语句为 CREATE SEQUENCE REDIS_NODE_ID_SEQSTART WITH 1 ...
- DGV设置自动增长列
当一个DGV要显示两个WEB接口的列表时,使用AutoGenerateColumns自动在后面增加列 try {Models.Department.Query.ResultResponse query ...
最新文章
- ARP协议全面实战手册1.1.2设置过滤器
- 为什么企业需关心DDoS攻击?—Vecloud微云
- IO流介绍、java常用的几个IO流类之间的区别,以及各自的用法、使用场景
- 前端-----数据类型和运算符
- JAVA之运算符优先级
- hive mysql互导_Hive和MySQL数据互导
- 计算机配置cpo,使用域组策略及脚本统一配置防火墙-20210421070355.docx-原创力文档...
- 随笔:《向死而生》---我修的死亡学分
- 少量数据通过Excel表格数据导入server SqlServer查询
- 现在谁还会LOL钻石网吧特权?
- python趣味编程---羊车门问题
- Java实例教程(上)
- 【一致性仿真】Group-Bipartite Consensus in the Networks With Cooperative-Competitive Interactions
- LabVIEW编程LabVIEW控制KELLER压力传感器例程与相关资料
- 必须要知道的GridView用法(1)
- php调用百度地图定位,php用百度地图API进行IP定位和GPS定位
- 分享142个ASP源码,总有一款适合您
- 基于Dubbo协议的接口测试
- 【C语言项目实战】C语言实现文件加密
- 广东省计算机水平考试证书有效期,软件设计师证书有效期是多久?永久有效吗?...
热门文章
- 想成为BAT中的一员,你总要去学点什么(二)
- Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
- 爬虫 spider12——暂停小总结_爬虫流程_微服务架构流程
- leetcode 551. 学生出勤记录 I(Java版)
- 操作系统:第二章 进程管理3 - 进程同步与互斥
- 关于我国科技创新研究,以及创新成果的转化的思考
- 看动画学算法之:排序-插入排序
- linux网络编程--select/poll/epoll 详解
- C++ 基础概念、语法和易错点整理
- 1036 Boys vs Girls (25 分)_27行代码AC