读书人

oracle怎么实现自增长

发布时间: 2012-12-24 10:43:13 作者: rapoo

oracle如何实现自增长?
点击右边红色标题查看本文完整版:oracle如何实现自增长?

oracle如何实现自增长,有一个表:
CREATE TABLE `dutswitch` (
? `ID` int(11) NOT NULL auto_increment,
? `MachineName` varchar(20) NOT NULL,
? `CustomerLotID` varchar(20) NOT NULL,
? `state` varchar(4) NOT NULL,
? `status1` varchar(64) NOT NULL,
? `status2` varchar(64) NOT NULL,
? `Date` varchar(20) NOT NULL,
? PRIMARY KEY? (`ID`)
) ENGINE=MyISAM? DEFAULT CHARSET=utf8 AUTO_INCREMENT=7049 ;


插入一条数据:
INSERT INTO `dutswitch` VALUES (6903, 'xx-xx', 'F925547T0J', 'FT2', 'FFFF7EFFFFFFFFFFFFFFBFFFFFFFFFFFFFFC7FFCFFCFFFCF7FDF6FEEFFFFFFFF', '0', '20090830075545');

表中ID是自增长的,但是oracle中好像不支持自增长。现在我要插入一条数据,用oracle语法来写,但是不包含ID的内容,怎么才能成功写入?
insert into ('machinename','customerlotid','state','status1','status2','date') values (对应的变量);


------解决方法--------------------


oracle的资增长是通过SEQUENCE来实现的。

Create Sequence?
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,?
CREATE SEQUENCE emp_sequence?
? INCREMENT BY 1? -- 每次加几个?
? START WITH 1? -- 从1开始计数?
? NOMAXVALUE? -- 不设置最大值?
? NOCYCLE? -- 一直累加,不循环?
? CACHE 10;?

一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL?
CURRVAL=返回 sequence的当前值?
NEXTVAL=增加sequence的值,然后返回 sequence 值?
比如:?
? emp_sequence.CURRVAL?
? emp_sequence.NEXTVAL?

可以使用sequence的地方:?
- 不包含子查询、snapshot、VIEW的 SELECT 语句?
- INSERT语句的子查询中?
- NSERT语句的VALUES中?
- UPDATE 的 SET中?

可以看如下例子:?
INSERT INTO emp VALUES?
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);?
SELECT empseq.currval? FROM DUAL;?


ORACLE SEQUENCE 介绍?
http://blog.csdn.net/tianlesoftware/archive/2009/10/30/4745039.aspx
------解决方法--------------------


oracle的资增长是通过SEQUENCE来实现的。

Create Sequence?
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,?
CREATE SEQUENCE emp_sequence?
? INCREMENT BY 1? -- 每次加几个?
? START WITH 1? -- 从1开始计数?
? NOMAXVALUE? -- 不设置最大值?     

读书人网 >编程

热点推荐