Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >sql实现简单自增长

sql实现简单自增长

作者头像
剽悍一小兔
发布于 2018-05-17 06:27:12
发布于 2018-05-17 06:27:12
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

在设计数据库表的过程中,主键一般都设为自增长,数据库产品自带的序列可以解决这个问题。

其实,用简单的sql查询语句也可以实现。

假设现在有一张商品表sp001:

Paste_Image.png

主键是SPBH,希望从000 增长到 999,不用序列的话可以这样做: 新建一个程序包,用来处理商品信息的业务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create or replace package pkg_spgl is
     --获得商品编号
     function getSpBh(increment integer) return varchar2; 
       
end pkg_spgl;


create or replace package body pkg_spgl is
       function getSpBh(increment integer) return varchar2 is
         spbh  sp001.spbh%type;
       begin
           select to_char(nvl(max(a.spbh),0)+increment,'FM000') into spbh from jack.sp001 a ;
           return spbh;
       end;
end pkg_spgl;

然后,在insert数据的时候,直接调用获取商品编号的方法即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insert into jack.sp001 values(jack.pkg_spgl.getSpBh(1),'可乐',2.5,30,null,'110000') ;

insert into jack.sp001 values(jack.pkg_spgl.getSpBh(1),'牛奶',3.5,50,null,'110000') ;

insert into jack.sp001 values(jack.pkg_spgl.getSpBh(1),'饼干',5,30,null,'110000') ;

insert into jack.sp001 values(jack.pkg_spgl.getSpBh(1),'蛋糕',100,10,null,'110000') ;

如图,这样也可以简单实现。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.08.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
oracle面试必会6题经典_oracle常见面试题
1.你要对操纵Oracle数据库中的数据。下列哪个选项表示Oracle中select语句的功能,
全栈程序员站长
2022/11/02
2.6K0
​oracle 笔记
一、 oracle介绍 ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组 软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。 比如SilverStream 就是基于数据库的一种中间件。ORACLE 数据库是目前世界上使用最为广泛的数据 库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能; 作为一个关系数据库, 它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只 要在一种机型上学习了ORACLE 知识,便能在各种类型的机器上使用它。
千羽
2021/07/20
1K0
​oracle 笔记
写了个简单的job
首先建表,还有序列: -- Create table create table MYDAILYDK ( dkproint NUMBER not null, week VARCHAR2(100) not null, dktime DATE not null, name VARCHAR2(255) not null, id NUMBER not null ) tablespace SYSTEM pctfree 10 pctused 40 initr
小小明童鞋
2018/06/13
3680
Oracle基础试题
表结构: create table tbEmp --职员表 ( eID number(7) primarykey, --职员编号 eName varchar(20) not null, --职员姓名 eSex varchar(2) not null --职员性别 check(esex
Java学习
2018/04/13
7100
关于数据质量脚本自动化处理V2.0
一个良好的数据质量规则引擎必然是可配置的,可开发的,可定时执行的,前一个版本是写死在代码中的,友好性比较差,再则缺乏判断会导致重复执行问题,2.0在前面基础上增加了容错机制,增加了可配置性。再有甚者,还可以写个前端页面做质量规则配置,写个定时任务配置等等。
python与大数据分析
2022/03/11
3550
关于数据质量脚本自动化处理V2.0
数据库 105道题目整理与吐血总结
第一波题目 drop table PRODUCT cascade constraints; create table PRODUCT ( id NUMBER not null, --主键 pcode VARCHAR2(20) not null, --商品编号 pname VARCHAR2(20), --商品名称 inprice NUMBER(7,2), --进价 outprice NUMBER(7,2), --售价 toma VARCHAR2(20), --管理员名称 l
二十三年蝉
2018/03/01
1.6K0
oracle 11g 处理json格式的字段 获取 key/value值
本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/05/06 16:10:49
overme
2022/01/17
9.4K0
利用Oracle dbms_pipe实现存储过程之间的通信
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53909694
用户1148526
2019/05/25
7450
一个用来生成流水号的存储过程
我们经常需要用一个流水号来唯一表示一条数据,我们有时采用队列来自动生成一个唯一的流水号,但是采用队列经常不能满足我们的需求,比如说,这个队列只能设定一个最小值,最大值,然后进行累加,不能将产生这个流水号的日期包括今这个流水号中;一种类型就要新建一个队列等。 下面这个存储过程可以产生一个流水号,它的格式是当前日期(格式YYYYMMDD)+6位的流水号数字,不同的类型只要给出一个不同的类型名称就可以了。在使用这个存储过程前,要先创建一个表来保存不同的类型,表结构如下: create table T_GENID (   CLASS   NUMBER(2) not null,   GENDATE CHAR(8) not null,   ID      VARCHAR2(12) not null ) tablespace SERVICE_MAIN_DAT   pctfree 10   pctused 80   initrans 1   maxtrans 255   storage   (     initial 1M     next 1M     minextents 1     maxextents unlimited     pctincrease 0   ); -- Create/Recreate primary, unique and foreign key constraints alter table T_GENID   add constraint PK_GENID primary key (CLASS,ID)   using index   tablespace SERVICE_MAIN_IDX   pctfree 10   initrans 2   maxtrans 255   storage   (     initial 1M     next 1M     minextents 1     maxextents unlimited     pctincrease 0   );
源哥
2018/08/28
5450
【DB笔试面试449】如何监控数据库的登陆登出、DDL语句等内容?
系统中一些常用的监控都可以使用DDL触发器和系统触发器来实现。可以先创建一张记录DDL语句的表XB_AUDIT_DDL_LHR(由于该表记录数会很大,所以,需创建成按月自动分区的分区表),并创建合适的索引,然后创建存储过程用于插入DDL信息到该日志表中。最后再创建系统触发器就可以将DDL语句或系统事件的信息插入日志表中。下面详细说明DDL触发器和系统触发器的使用。
AiDBA宝典
2019/09/30
6640
Oracle pl/sql编程值控制结构
以下测试案例均来自于scott方案,运行前请确保该方案解锁。 1、条件分支状语 pl/sql中提供了三种条件分支状语,分别是: if   then if   then   else if   then
郑小超.
2018/01/26
7230
Oracle 存储过程 PROCEDURE
一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。
星哥玩云
2022/08/16
7610
学习SQL【9】-集合与联结
现在我们开始学习使用2张以上的表的SQL语句。通过以行方向为单位的集合运算符和以列方向为单位的联结,就可以将分散在多张表中的数据组合成期望的结果。 表的加减法 什么是集合运算 集合在数据库中表示为记录的集合。具体来说,表、视图和查询的执行结果都是记录的集合。 集合运算就是对满足同一规则的记录进行的加减等四则运算。 用来进行集合运算的运算符称为集合运算符。 表的加法—UNION UNION(并集)是进行记录加法运算的集合运算符。在学习使用方法之前,我们先创建一张表: --创建表Product2(商品2)
爱吃西瓜的番茄酱
2018/04/04
1.3K0
PL/SQL 下邮件发送程序
      对DBA而言,尽管在os级别下发送邮件是轻而易举的事情,然而很多时候我们也需要在PL/SQL中来发送邮件,比如监控job的执行状况等。本文根据网友(源作者未考证)的代码将其改装并封装到了package,感谢这位网友的无私奉献。文章首先给出演示调用该包发送邮件的情形后面给出了完整的代码。经测试Oracle 10g,Oracle 11g下均可用。关于os下发送邮件可参考:不可或缺的 sendEmail
Leshami
2018/08/13
4860
PL/SQL 下邮件发送程序
MyCat教程【全局序列号-全局主键自增长】
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
用户4919348
2019/10/17
1.8K0
模拟业务最小测试用例02
Oracle数据库对很多开发人员而言,基本就只是一个存储数据的仓库,只不过这个仓库功能非常强大,额外提供了很多好用的功能,需要的时候会用就好,不会纠结于某个细节。而对很多DBA而言,正好相反,喜欢沉溺于某些细节上,对某些小知识点对应的原理理解的非常透彻,但却往往很少会站在开发层面认识Oracle。 本文旨在构造一份相对较全面的测试数据,对开发常用的对象都模拟创建一份测试用例,DBA就可以直接拿去做一些基本测试。
Alfred Zhao
2022/05/06
8380
对比 PL/SQL profiler 剖析结果
      使用PL/SQL PROFILER 剖析PL/SQL代码是快速定位PL/SQL代码段最有效的方法。在上一篇文章使用PL/SQL PROFILER 定位 PL/SQL 瓶颈代码中描述了安装PROFILER,并给出了剖析的示例。本文参照了Tom大师的代码来对比剖析前后的性能并附上其代码。
Leshami
2018/08/13
5990
Oracle PL/SQL随堂笔记总结
1.理解oracle的pl/sql的概念 2.掌握pl/sql编程技术(过程、函数、触发器) pl/sql是标准sql语句的扩展 简介 1.过程、函数、触发器都是由pl/sql编写 2.过程、函数、触发器是在oracle中 3.pl/sql是非常强大的过程语言 4.过程、函数等可以在java程序被调用 学习必要性: 1.提高应用程序的性能 2.模块化的设计思想 3.减少网络传输量 4.提高安全性 不好的方面: 移植性差 pl/sql可以使用变量和逻辑控制语句 可编写:分页存储过程模块,订单处理存储过程模块,转账存储过程模块……
Alfred Zhao
2019/05/24
2.2K0
Oracle基础(五)pl/sql进阶(分页过程)
通过pl/sql实现分页过程,再该过程中由简单到难一步步深入,目的在于通过该案例熟悉pl/sql的各种存储过程,包,游标。怎样在java中调用等内容的学习。
全栈程序员站长
2022/08/27
6330
MySQL列属性之自增长
在网上看见关于一首歌的评论,共勉:十年前,你周围的人会根据你父母对待你。十年后,你周围的人会根据你对待你的父母和你的孩子!没有不弯的路,没有不谢的花。通往成功的路不会平坦宽阔,实现自已的梦想不会一帆风顺,人生不如意十有八九,但这些都是暂时的。花开花落,潮起潮落,一切都会有终结的!
小Bob来啦
2020/12/08
5.1K0
MySQL列属性之自增长
相关推荐
oracle面试必会6题经典_oracle常见面试题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验