mysql实现oracle序列(sequence)的解决方案--自定义存储过程

转自:http://g.kehou.com/t1018529793.html
MySQL自增长与Oracle序列的区别:
自增长只能用于表中的其中一个字段
自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.
自增长会把一个未指定或NULL值的字段自动填上.

在mysql中添加序列,请看下面的实例:
在MYSQL里有这样一张表:
Java代码 

CREATE TABLE Movie( 
id           INT NOT NULL AUTO_INCREMENT, 
name     VARCHAR(60) NOT NULL, 
released YEAR NOT NULL, 
PRIMARY KEY (id) 
) ENGINE=InnoDB; 

Java代码 

INSERT INTO Movie (name,released) VALUES ('Gladiator',2000); 
INSERT INTO Movie (id,name,released) VALUES (NULL,'The Bourne Identity',1998); 

在ORACLE是这样的:
Java代码 

CREATE TABLE Movie( 
id          INT NOT NULL, 
name     VARCHAR2(60) NOT NULL, 
released INT NOT NULL, 
PRIMARY KEY (id) 
); 
CREATE SEQUENCE MovieSeq; 

Java代码 

INSERT INTO Movie (id,name,released) VALUES (MovieSeq.NEXTVAL,'Gladiator',2000); 


在oracle下为表添加一个触发器,就可以实现mysql自增长功能:
Java代码 

猜你喜欢

转载自zhuruxin86.iteye.com/blog/1465290
今日推荐