`

创建表和表的自增

阅读更多
-- 创建表(联合主键)
-- serviceid 是用于自增
create table eos_serviceitems(
serviceid number not null,
serviceno varchar2(100) not null,
servicename varchar2(100) not null,
servicetypeno varchar2(50) not null,
unit varchar2(20) not null,
unitprice number(10,2) not null,
companyid varchar2(30) not null,
deleteflag number(1) not null,
crname varchar2(50),
crtime timestamp,
chname varchar2(50),
chtime timestamp,
primary key(serviceid,serviceno)
)

-- 查询表
select * from eos_serviceitems

-- 删除表
drop table eos_serviceitems

-- 创建表的自增序列
create sequence eos_serviceitems_sequ
    increment by 1       -- 每次增加的个数
      start with 1       -- 从几开始计数
      nomaxvalue         -- 设置最大值到多少。这里是不设置
      nocycle            -- 一直累加,不循环
      cache             --指定在内存中可以预分配的序列号个数(默认值:20)
      order;

-- 创建触发器
create trigger eos_serviceites before
       insert on eos_serviceitems for each row
           begin
              select eos_serviceitems_sequ.nextval into:new.serviceid from dual;
           end;
-- 新增数据
insert into eos_serviceitems(serviceno, servicename, servicetypeno, unit, unitprice, companyid, deleteflag)
values('FW001', '001服务名称', 'FWLB001', '一件', 15.5, 'GSID001',1);


对sequence说明:
increment by :用于指定序列增量(默认值:1),如果指定的是正整数,则序列号自动递增,如果指定的是负数,则自动递减。
start with :用于指定序列生成器生成的第一个序列号,当序列号顺序递增时默认值为序列号的最小值 当序列号顺序递减时默认值为序列号的最大值。
Maxvalue:用于指定序列生成器可以生成的组大序列号(必须大于或等于start with,并且必须大于minvalue),默认为nomaxvalue。
Minvalue:用于指定序列生成器可以生成的最小序列号(必须小于或等于starr with,并且必须小于maxvalue),默认值为nominvalue。
Cycle:用于指定在达到序列的最大值或最小值之后是否继续生成序列号,默认为nocycle。
Cache:用于指定在内存中可以预分配的序列号个数(默认值:20)。
在sequence中应注意:
1、 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。
2、 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再 取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。







分享到:
评论

相关推荐

    创建oracle数据库中表的主键和自增

    下面将详细介绍如何通过序列(Sequence)和触发器(Trigger)来实现在Oracle中创建自增的主键。 #### 序列(Sequence) 序列是一种自动产生数值的数据库对象。它可以被用来生成唯一的、连续的整数或浮点数。序列...

    常用数据库的自增字段创建方法汇总

    DB2 支持通过 `GENERATED ALWAYS AS IDENTITY` 属性来创建自增字段。这种方式非常直观且易于理解。以下是一个具体的例子: ```sql CREATE TABLE T1 ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START ...

    pgsql创建自增ID,建表,创建索引,创建分区表.txt

    pgsql创建自增ID,建表,创建索引,创建分区表

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、提交的知识点总结 Oracle 中创建表是指在 Oracle 数据库中创建一个新的表结构,以存储特定的数据。在创建表时,需要指定表的名称、字段名称、...

    主表从表ID自增创建语句.sql

    Oracle主表从表ID自增创建语句

    oracle创建自增列.txt

    oracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txt

    oracle创建表空间用户等

    本文将详细介绍如何在Oracle数据库中创建表空间、创建用户并分配相应的权限,以及如何设置表空间的自增长和修改其大小。 #### 一、创建表空间 表空间是Oracle数据库中的逻辑存储单元,它由一个或多个数据文件组成...

    oracle中创建自增主键的方法

    oracle中创建自增主键的方法

    Oracle使用序列创建自增字段

    ### Oracle 使用序列创建自增字段 在数据库设计与开发中,自增字段是十分常见的需求之一,尤其是在需要为每一行记录自动分配一个唯一编号的情况下。Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。...

    mysql自增字段重排 mysql删除表后自增字段从1开始.pdf

    - 在MyISAM之外的数据表类型中,如InnoDB,可以通过创建包含自增字段的复合索引来实现多个独立的自增序列,前提是前面的字段组合确保唯一性。 6. **不同存储引擎的差异**: - MyISAM不重用删除的最大编号,而BDB...

    Python-实现轻松创建PostgreSQL的分区表DDL

    通过这样的Python脚本,我们可以轻松地为PostgreSQL数据库创建和管理分区表,大大简化了DDL的编写工作。在大型项目中,这种自动化方法尤其有用,因为手动维护大量的分区表可能会变得非常繁琐。 在提供的`pgpart-...

    Oracle创建主键自增表(sql语句实现)及触发器应用

    在Oracle数据库中,创建主键自增表是一项常见的任务,这有助于确保每个新插入的记录都有一个唯一的标识符。下面将详细讲解如何通过SQL语句实现这一功能,并结合触发器的应用来自动增加主键。 首先,我们创建一个...

    Oracle数据库创建表tuser设置主键自动增长

    本篇详细介绍了如何在Oracle数据库中创建一张包含自动增长主键的表`tuser`,并通过创建序列和触发器实现了这一功能。这种做法不仅能够简化主键管理的工作量,还能够确保数据的一致性和完整性。对于实际应用来说,这...

    oracle创建表创建唯一索引

    在Oracle数据库管理系统中,创建表和唯一索引是数据库设计中的关键步骤,它们对于数据的组织、查询效率和数据完整性至关重要。以下将详细介绍如何创建学员信息表,创建唯一索引,以及如何修改表来添加主键和检查约束...

    oracle数据库如何创建自增列的技巧教程.doc

    oracle数据库如何创建自增列的技巧教程.doc

    mysql自增字段重排 mysql删除表后自增字段从1开始.docx

    MyISAM表不重用删除的最大编号,而HEAP表(从MySQL 4.1开始支持自增)和BDB表则可以重用。InnoDB表不支持通过`CREATE TABLE`或`ALTER TABLE`语句改变自增初始值,且删除的自增值不可重用。 创建复合索引可以在同...

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    - 将生成的序列创建脚本复制到表创建脚本中,放在`CREATE TABLE`和`CREATE TRIGGER`之间。 3. **生成触发器脚本:** - 同样地,在`Table Properties`对话框的`Preview`选项卡中可以看到触发器的创建脚本。 ####...

    oracle表的id自增sql

    oracle 数据库建表id自增的sql语句创建sequence的名称,S_out_gold这个为

    重载时自增(自减)的前缀和后缀的区别

    本文将深入探讨前缀自增和后缀自增的区别,并通过具体的实例来解释它们在重载过程中的行为。 首先,让我们明确一下前缀和后缀自增自减的基本概念: 1. 前缀自增/自减(如 `++i` 和 `--i`):这种形式的操作符会先...

Global site tag (gtag.js) - Google Analytics