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