Rumah  >  Artikel  >  pangkalan data  >  MySQL序列解决方案

MySQL序列解决方案

WBOY
WBOYasal
2016-06-07 16:55:39801semak imbas

最近公司项目从Oracle向MySQL移植,遇到的第一个问题就是MySQL没有序列。 MySQL能够把字段设置为自增长,写法为: view plaincop

最近公司项目从Oracle向MySQL移植,遇到的第一个问题就是MySQL没有序列。

MySQL能够把字段设置为自增长,,写法为:

view plaincopy to clipboardprint?
create table test  
(  
  id int auto_increment primary key  

create table test
(
  id int auto_increment primary key
)

自增字段只能是primary key,插入数据时自增字段不要设值或把值设成NULL就能实现自增长了。

view plaincopy to clipboardprint?
# INSERT INTO test (name) VALUES ('Gladiator');   
# INSERT INTO test (id,name) VALUES (NULL,'The Bourne Identity'); 
# INSERT INTO test (name) VALUES ('Gladiator'); 
# INSERT INTO test (id,name) VALUES (NULL,'The Bourne Identity');

但是这种自增长只能用于某个表的某个字段,要实现像oracle那样的序列功能要用到存储过程

view plaincopy to clipboardprint?
CREATE TABLE `seq` (  
  name varchar(20) NOT NULL,  
  val int(10) UNSIGNED NOT NULL,  
  PRIMARY KEY  (name)  
) ENGINE=MyISAM DEFAULT CHARSET=latin1  
CREATE FUNCTION seq(seq_name char (20)) returns int 
begin  
UPDATE seq SET val=last_insert_id(val+1) WHERE name=seq_name;  
RETURN last_insert_id();  
end  
INSERT INTO seq VALUES('one',1000);  
select seq('one'); 

linux

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Linux下安装Oracle 10XE版Artikel seterusnya:Oracle和MySQL对比