Oracle创建表并设置主键自增
oracle自增序列实现可作为主键

VALUE VARCHAR2(100),
CREATETIME DATE,
USERMNAME VARCHAR2(20)
)
RID 是我要建自增序列字段
第一步:
建立一个序列:
-- Create sequence create sequence SQE_TAB_USERINPUT minvalue 1 maxvalue 99999999999999999999999999--不要超过序列的位数 start with 21 increment by 1 cache 20;
网络错误503请刷新页面重试持续报错请尝试更换浏览器或网络环境
好记性不如烂笔头 记录如实 现 可 作 为 主 键
表结构
create table TAB_USERINPUT
(
RID
VARCHAR2(20) not null,
VARID VARCHAR2(20),
到此,自增序列就建好了
第二步:
把序列与表的字段关联 (oracle 的序列作用空间是数据库 所以一个序列可以与多个表关联,但是他们使用同一个数据)
create or replace trigger TR_TAB_userinput before insert on TAB_USERINPUT -- 这里最好使用before for each row -begin select SQE_TAB_USERINPUT.nextval into:new.rID from dual; end;
Oracle自动增长列的设置

SQL SERVER 和ACCESS 以及MYSQL 中,都有一种自增字段,通常被用来做主键或索引键,但是ORACLE 中,确并没有提供这种功能,但我们确经常需要这个功能,可以用以下方法解决,一,如果你不在集群环境下使用,并且用到了hibernate,那么可以用hibernate提供的产生自动增长类型主键的increment策略,如下在**.hbm.xml(hibernate映射文件)中配置如下<class name="com.xx.xx.Test" table="TEST"><id name="id" type="int" column="ID">//该句指定使用hibernate自带的increment策略生成主键<generator class="increment"/></id><property name="uname" type="ng.String" column="UNAME"/></class>这样,在java文件中对表增加记录时,只需添加除ID外的其他字段,然后save即可,注意,increment 实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键,increment不能在集群环境下使用,二,使用hibernate的sequence策略,在oracle中新建一个sequence,在hibernate中使用,如下在**.hbm.xml(hibernate映射文件)中配置如下<class name="com.xx.xx.Test" table="TEST"><id name="id" type="int" column="ID">//该句指定使用hibernate自带的sequence策略生成主键,TEST_SEQ是在数据库中新建的sequence的名称<generator class="sequence"><param name="sequence">TEST_SEQ</param></generator><property name="uname" type="ng.String" column="UNAME"/></class>这样,在java文件中对表增加记录时,只需添加除ID外的其他字段,然后save即可,三,以上两种方法都是通过hibernate实现的,下面给出ORACLE的一种实现方式1. 建立SEQUENCECREATE [ OR REPLACE ] SEQUENCE sequence_identity START WITH initial seedINCREMENT BY step MAXVALUE upper bound [NOMAXVALUE] NOCYCLE [empty] 2. 建立TRIGGERCREATE [ OR REPLACE ] TRIGGER trigger_identity BEFORE INSERT ON table_name FOR EACH ROW BEGIN SELECT sequence_identity.NEXTVALINTO :new.column_name FROM DUAL; END;这样,在java文件中对表增加记录时,只需添加除ID外的其他字段,然后save即可,。
oracle数据库创建表且主键自增

oracle数据库创建表且主键⾃增唠叨⼏句:⼏年前的知识忘却了,整理⼀下笔记,提供⼀下⽅便1、创建数据库表设置主键create table users( userid number(10) primary key, /*主键,⾃动增加*/ username varchar2(20));附删除表:drop table users;2、创建序列⾃增CREATE SEQUENCE user_Sequence INCREMENT BY 1 -- 每次加⼏个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最⼤值 NOCYCLE -- ⼀直累加,不循环 CACHE 100;附删除序列: DROP SEQUENCE user_Sequence创建好序列之后,就⼿动可以添加数据了,可以多执⾏⼏次insert into users(userid ,username ) values(user_Sequence.nextval,'范伟');查询表数据看看效果select userid ,username from users3、那么问题来了,在oracle客户端这样操作是可以的。
关键是怎么融⼊到实际开发中呢?创建触发器试试!!create or replace trigger users_trigger --users_trigger 触发器名称before insert on users --users是表名for each rowdeclarenextid number;beginIF :erid IS NULL or :erid=0 THEN --userid是列名select user_Sequence.nextval --user_Sequence 正是刚才创建的序列into nextidfrom sys.dual;:erid:=nextid;end if;end users_trigger ; --users_trigger 触发器名称附删除触发器:drop trigger users_trigger;再次插⼊数据试试效果吧insert into users(username ) values('本⼭');。
oracle主键自动增长序列

select * from(select e.*,ROWNUM rnfrom (select * from emp order by empno) e)where rn between 1 and 10;select * from(select e.*,ROWNUM rnfrom (select * from emp order by empno) ewhere ROWNUM<=10)where rn>=1;首先,你要有一张表!CREA TE TABLE example(ID Number(4) NOT NULL PRIMARY KEY,NAME V ARCHAR(25),PHONE V ARCHAR(10),ADDRESS V ARCHAR(50));然后,你需要一个自定义的sequenceCREA TE SEQUENCE emp_sequenceINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXV ALUE -- 不设置最大值NOCYCLE -- 一直累加,不循环NOCACHE -- 不建缓冲区以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,假如你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下假如你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但假如遭遇意外情况如当机了或Oracle死了,则下次取出的seq值将和上次的不连贯.(假如连不连贯无所谓建议用cache,因为时间就是金钱呀!跑题了!)书接上文,你只有了表和序列还不够,还需要一个触发器来执行它!代码如下:CREA TE TRIGGER "触发器名称" BEFOREINSERT ON example FOR EACH ROW WHEN (new.id is null)beginselect emp_sequence.nextval into: new.id from dual;end;打完收工!下面你就试试插入数据吧!INSERT INTO example(Name,phone,address) V alues('Cao','56498543','Heibei');=============================================================ORACLE SEQUENCE的简单介绍(自增长字段)- -from:/BBS/user_file/2002-04-10/1018438701.htm在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
oracle建表、建主键、外键基本语法

oracle建 表 、 建 主 键 、 外 键 基 本 语 法
oracle建 表 、 建 主 键 、 外 键 基 本 语 法
-创建表格语法: create table 表名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型 是否为空
);
-增加主键 alter table 表名 add constraint 主键名 primary key (字段名1);
-增加外键: alter table 表名 add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2);
EXAM_SCORE
number(5,2),
EXAM_DATE
date,
AUTOID
number(10)
not null,
STU_ID
char(5),
SUB_ID
char(3),
constraint PK_T_SCORE primary key (AUTOID),
constraint FK_T_SCORE_REFE foreign key (STU_ID)
references T_STU (STU_ID)
)
在建立表格时就指定主键和外键
create table T_STU (
STU_ID
char(5)
not null,
STU_NAME
varchar2(8)
not null,
constraint PK_T_STU primary key (STU_ID)
使用powerdesigner创建oracle数据库表,设置表主键列为自动增长

使用powerdesigner创建oracle数据库表,设置表主键列为自动增长powerdesigner 版本12.5创建表就不说了。
下面开始介绍设置自动增长列。
1 在表视图的列上创建。
双击表视图,打开table properties ———>columens ,双击要设置的列(显示列的序号的那个按钮,单击后,会显示横向的黑色箭头)。
打开column properties 对话框。
在‘general’ 项中,最下面,找到sequence,下拉框后面,有三个按钮就‘create’,‘select’,‘properties’。
新建的话就点击‘create' 打开sequence properties 对话框,general 中的name,code 随意修改切换到physical options 项,输入下面几项内容start with 1increment by 1minvalue 1maxvalue 根据自己需要决定是否要设定。
没有的话,选择no max valueno cache 勾选输入完后,点击应用。
创建完毕。
在preview 中可以看到相应的创建代码同时,在table properties———>preview 的创建代码中,自动加入了触发器trigger 的创建代码。
创建完成。
使用:到table properties———>preview 中拷贝table 的创建代码,赋值到plsql中执行。
提示:不知道是我的powerdesigner 设置问题还是怎么回事,table 的创建代码中没有自动加入sequence 的创建部分。
所以,还要到sequence properties ———>preview 中,把sequence的创建代码拷贝到表创建的代码中放到cteate table .... 和create trigger ...中间例如:create table G_EC_LotteryCategory (lcId NUMBER(3) not null,lcName NVARCHAR2(30),lcAbbr NVARCHAR2(20),constraint PK_G_EC_LOTTERYCATEGORY primary key (lcId))/create sequence Sequence_LotCateIDincrement by 1start with 1nomaxvalueminvalue 1nocache;create trigger tib_g_ec_lotterycategory before inserton G_EC_LotteryCategory for each rowdeclareintegrity_error exception;errno integer;errmsg char(200);dummy integer;found boolean;begin-- Column lcId uses sequence Sequence_LotCateIDselect Sequence_LotCateID.NEXTVAL INTO :new.lcId from dual;-- Errors handlingexceptionwhen integrity_error thenraise_application_error(errno, errmsg);end;/在plsql 中执行上端代码。
简单三步轻松实现ORACLE字段自增

简单三步轻松实现ORACLE字段⾃增第⼀步:创建⼀个表。
复制代码代码如下:create table Test_Table(ID number(11) primary key,Name varchar(50) not null,Value1 varchar(50) not null)第⼆步:创建⼀个⾃增序列以此提供调⽤函数。
复制代码代码如下:create sequence AutoIDstart with 1 //根据需要⾃⼰可修改该数值increment by 1 //步长值minvalue 1nomaxvalue其实到此步骤,已经可以实现字段⾃增了。
新增记录时看如下代码:复制代码代码如下:Insert into Test_Table(ID,Name,Value1)values(AutoID.nextval,'xiyang','blog')第三步:我们通过创建⼀个触发器,使调⽤的⽅式更加简单。
复制代码代码如下:create trigger AutoID_Triggerbefore insert on Test_Table for each rowbeginselect AutoID.nextval into :new.ID from dual;end AutoID_Trigger;该触发器在数据库注册了表格的侦听,即当指定表Test_Table插⼊记录之前,我们调⽤⼀个序列⽅法的nextval获得新值,插⼊⾃增字段。
在触发器中,我们调⽤了系统虚拟表dual,该表作为系统表的⼀部分,它内部只存储⼀条记录,我们可以通过该表获取与系统相关的⼀些信息或者进⾏⼀些简单的逻辑操作。
在该触发器中,我们使⽤了dual的⼀个经典⽤法,即获取定义序列的nextval⽅法。
通过上⾯三个步骤,我们就实现了⼀个表的字段⾃增,做插⼊操作时执⾏以下代码即可:Insert into Test_Table(Name,Value1) values('xiyang','blog')通过在数据库中查询结果集,会发现ID列是⾃增的。
oracle中如何设置自增主键

首先,你要有一张表!CREATE TABLE example(ID Number(4) NOT NULL PRIMARY KEY,NAME V ARCHAR(25),PHONE V ARCHAR(10),ADDRESS V ARCHAR(50));如果对于以上的建表语句还有疑问的话,建议您不要继续了!有那么些时间您还不如去看看金庸读读琼瑶!然后,你需要一个自定义的sequenceCREATE SEQUENCE emp_sequenceINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXV ALUE -- 不设置最大值NOCYCLE -- 一直累加,不循环NOCACHE -- 不建缓冲区以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯无所谓建议用cache,因为时间就是金钱呀!跑题了!)书接上文,你只有了表和序列还不够,还需要一个触发器来执行它!代码如下:CREATE TRIGGER "触发器名称" BEFOREINSERT ON example FOR EACH ROW WHEN (new.id is null)beginselect emp_sequence.nextval into: new.id from dual;end;打完收工!下面你就试试插入数据吧!INSERT INTO example(Name,phone,address) Values(''Cao'',''56498543'',''Heibei'');=============================================================ORACLE SEQUENCE的简单介绍(自增长字段)- -在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle数据库如何创建表并设置主键自增
首先我们使用oracle sql developer官方管理工具来新建表并色织主键自增,首先连接数据库想必不用多说。
创建表
在表那个文件夹上右键选择新建表
弹出如下图所示:
输入你想要的表名和列名并设置数据类型主键一定要设置NUMBER类型
设置主键
只要在主键那一行单件一下最前面的小方块就行,产生如何所示的效果即可:
主键的标识就是那个小钥匙。
设置主键自增
下面我们设置主键自增,选中主键所在那一行,找到下面的身份列单击(如图所示):
如下图所示看到类型点击下拉菜单选择列序列:
此时系统自动生成触发器和序列不用做任何修改点击确定那个么一个主键自增的表就已经成功的生成了。
测试
下面我们测试一下数据插入是否成功,这里我们直插入name列不插入主键看看主键是否能够自增。
Select一下发现主键确实自动生成并且自增了,如果不放心可以多加几条测试数据,这里我就不多加描述了。