首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle如何实现自增长?

2014-01-28 
oracle如何实现自增长,有一个表: CREATE TABLE `dutswitch` (`ID` int(11) NOT NULL auto_increment,`Machi

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  -- 不设置最大值          

热点排行