- 浏览: 60689 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-- 创建表(联合主键)
-- 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防止这种情况。
-- 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 直接操作一个字符的自增
2013-12-17 09:03 565新增一条语句,其中一个字段是每个月自增。例如:SP+20131 ... -
Oracle 触发器和自增
2013-12-17 09:03 531create sequence eos_serviceitem ... -
Oracle 创建表空间和临时表空间 创建用户
2017-07-18 17:30 396---修改表空间大小 alter database data ... -
Oracle 数据库的操作 截取字符 系统时间
2013-12-17 08:55 805截取前面为0的字符 select ltrim(substr( ... -
orale 创建表空间
2013-09-05 17:47 540---qns 临时表空间 create temporary t ... -
创建视图
2013-03-18 09:15 668如果需要查询数据,且查询的数据在几个表,这个几个表没外键关联, ... -
日期类型转换(3)
2013-01-25 15:26 681三. 字符函数(可用于字面字符或数据库列) 1,字符串截取 ... -
日期类型转换(2)
2013-01-25 15:24 79211 select to_char(sysd ... -
日期类型转换(1)
2013-01-25 15:23 657ORACLE日期时间函数大全 ORACLE日期时间函数大全 ... -
索引的操作
2012-08-09 15:24 731索引的用处: 建 ... -
case 的操作
2012-07-04 09:01 697select i.id, i.managebodyno, i. ... -
主键约束、唯一性约束、检查约束
2012-02-29 15:27 28171.约束定义了必须遵循的的用户维护数据一致性和正确性的规则,是 ... -
主键和唯一索引的区别
2012-02-29 15:24 989区别 主键是一种约束,唯一索引是一种索引,两者在本 ... -
char, varchar 和 varchar2的区别
2012-02-29 10:47 816区别: 1.CHAR的长度是固定的,而VARCHAR2 ... -
Integer 和Number的区别
2012-02-29 10:27 2046建表的时候,如果是浮点数,一般设置为 number(m,n ) ... -
创建主键的自增
2012-02-29 10:28 740create table serviceitems( serv ...
相关推荐
下面将详细介绍如何通过序列(Sequence)和触发器(Trigger)来实现在Oracle中创建自增的主键。 #### 序列(Sequence) 序列是一种自动产生数值的数据库对象。它可以被用来生成唯一的、连续的整数或浮点数。序列...
DB2 支持通过 `GENERATED ALWAYS AS IDENTITY` 属性来创建自增字段。这种方式非常直观且易于理解。以下是一个具体的例子: ```sql CREATE TABLE T1 ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START ...
pgsql创建自增ID,建表,创建索引,创建分区表
Oracle 中创建表、序列、自增字段、添加注释、添加记录、添加触发器、提交的知识点总结 Oracle 中创建表是指在 Oracle 数据库中创建一个新的表结构,以存储特定的数据。在创建表时,需要指定表的名称、字段名称、...
Oracle主表从表ID自增创建语句
oracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txtoracle创建自增列.txt
本文将详细介绍如何在Oracle数据库中创建表空间、创建用户并分配相应的权限,以及如何设置表空间的自增长和修改其大小。 #### 一、创建表空间 表空间是Oracle数据库中的逻辑存储单元,它由一个或多个数据文件组成...
oracle中创建自增主键的方法
### Oracle 使用序列创建自增字段 在数据库设计与开发中,自增字段是十分常见的需求之一,尤其是在需要为每一行记录自动分配一个唯一编号的情况下。Oracle 数据库通过序列(Sequence)这一特性支持自增字段的实现。...
- 在MyISAM之外的数据表类型中,如InnoDB,可以通过创建包含自增字段的复合索引来实现多个独立的自增序列,前提是前面的字段组合确保唯一性。 6. **不同存储引擎的差异**: - MyISAM不重用删除的最大编号,而BDB...
通过这样的Python脚本,我们可以轻松地为PostgreSQL数据库创建和管理分区表,大大简化了DDL的编写工作。在大型项目中,这种自动化方法尤其有用,因为手动维护大量的分区表可能会变得非常繁琐。 在提供的`pgpart-...
在Oracle数据库中,创建主键自增表是一项常见的任务,这有助于确保每个新插入的记录都有一个唯一的标识符。下面将详细讲解如何通过SQL语句实现这一功能,并结合触发器的应用来自动增加主键。 首先,我们创建一个...
本篇详细介绍了如何在Oracle数据库中创建一张包含自动增长主键的表`tuser`,并通过创建序列和触发器实现了这一功能。这种做法不仅能够简化主键管理的工作量,还能够确保数据的一致性和完整性。对于实际应用来说,这...
在Oracle数据库管理系统中,创建表和唯一索引是数据库设计中的关键步骤,它们对于数据的组织、查询效率和数据完整性至关重要。以下将详细介绍如何创建学员信息表,创建唯一索引,以及如何修改表来添加主键和检查约束...
MyISAM表不重用删除的最大编号,而HEAP表(从MySQL 4.1开始支持自增)和BDB表则可以重用。InnoDB表不支持通过`CREATE TABLE`或`ALTER TABLE`语句改变自增初始值,且删除的自增值不可重用。 创建复合索引可以在同...
- 将生成的序列创建脚本复制到表创建脚本中,放在`CREATE TABLE`和`CREATE TRIGGER`之间。 3. **生成触发器脚本:** - 同样地,在`Table Properties`对话框的`Preview`选项卡中可以看到触发器的创建脚本。 ####...
oracle 数据库建表id自增的sql语句创建sequence的名称,S_out_gold这个为
本文将深入探讨前缀自增和后缀自增的区别,并通过具体的实例来解释它们在重载过程中的行为。 首先,让我们明确一下前缀和后缀自增自减的基本概念: 1. 前缀自增/自减(如 `++i` 和 `--i`):这种形式的操作符会先...
本篇文章将详细介绍如何创建一个基于自增ID的唯一编号类,并通过算法说明和实例演示来阐述其工作原理。 首先,我们要明确目标:创建一个PHP类,它接受自增ID、自定义前缀和位数作为参数,然后生成一个唯一的编号。...