mysql实现sequence
来源:互联网 发布:马里亚纳网络是什么 编辑:程序博客网 时间:2024/05/23 01:13
如何在mysql数据里使用Oracle序列语法.NEXTVAL和.CURVAL.
假设在mysql中序列的语法是:
NEXTVAL('sequence');
CURRVAL('sequence');
SETVAL('sequence',value);
-- 1创建tas_music表
-- 2创建序列表
-- 3序列表里插入如下记录
-- 4创建nextval function的代码如下:
-- 5创建setval function的代码如下:
-- 6创建currval function的代码如下:
-- 7创建触发器
-- 8至此,向tas_music表插入数据时,如果id值为空,则id会取序列值.
假设在mysql中序列的语法是:
NEXTVAL('sequence');
CURRVAL('sequence');
SETVAL('sequence',value);
-- 1创建tas_music表
DROP TABLE IF EXISTS `tas_app`.`tas_music`;CREATE TABLE `tas_app`.`tas_music` (`id` int(4) NOT NULL AUTO_INCREMENT,`name` varchar(32) NOT NULL,`icon` varchar(256) NOT NULL DEFAULT '',`url` varchar(256) NOT NULL DEFAULT '',`lyric` varchar(256) NOT NULL DEFAULT '',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2093 DEFAULT CHARSET=utf8;
-- 2创建序列表
DROP TABLE IF EXISTS `tas_app`.`tas_sequence`;CREATE TABLE `tas_app`.`tas_sequence` (`name` varchar(50) NOT NULL,`current_value` int(11) NOT NULL,`increment` int(11) NOT NULL DEFAULT '1',PRIMARY KEY (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 3序列表里插入如下记录
insert into tas_app.tas_sequence values('music',23,1);
-- 4创建nextval function的代码如下:
DELIMITER $$DROP FUNCTION IF EXISTS `nextval` $$CREATE DEFINER=`admin`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)BEGINUPDATE tas_sequenceSET current_value = current_value + incrementWHERE name = seq_name;RETURN currval(seq_name);END $$DELIMITER ;
-- 5创建setval function的代码如下:
DELIMITER $$DROP FUNCTION IF EXISTS `setval` $$CREATE DEFINER=`admin`@`%` FUNCTION `setval`(seq_name VARCHAR(50), value INTEGER) RETURNS int(11)BEGINUPDATE tas_sequenceSET current_value = valueWHERE name = seq_name;RETURN currval(seq_name);END $$DELIMITER ;
-- 6创建currval function的代码如下:
DELIMITER $$DROP FUNCTION IF EXISTS `currval` $$CREATE DEFINER=`admin`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)BEGIN DECLARE value INTEGER; SET value = 0; SELECT current_value INTO value FROM tas_sequence WHERE name = seq_name; RETURN value;END $$DELIMITER ;
-- 7创建触发器
DELIMITER $$drop trigger if exists tas_music_trigger $$create trigger tas_music_trigger before insert on tas_musicfor each row beginif new.id is null or new.id = '' or new.id = 0 THEN set new.id = nextval('music');end if;end $$DELIMITER ;
-- 8至此,向tas_music表插入数据时,如果id值为空,则id会取序列值.
- mysql实现sequence
- mysql实现sequence
- mysql实现sequence
- mysql实现sequence
- Mysql实现序列sequence
- mysql实现oracle sequence功能
- mysql实现sequence自增长
- mysql实现oracle的sequence
- 基于Mysql的Sequence实现
- MySQL 5.0的Sequence的实现
- 用mysql实现oracle sequence功能
- Navicat for Mysql 模拟实现oracle sequence
- 用mysql实现oracle sequence功能
- MySQL实现序列(Sequence)效果
- MySQL实现类似Oracle的序列 - sequence
- MySQL实现序列(Sequence)效果
- mysql 实现oracle中sequence 功能
- (转载)基于Mysql的Sequence实现
- noip2007 矩阵取数
- Java初学者不得不知的概念,JDK,JRE,JVM的区别?
- Inet4Address类和Inet6Address类
- 也说eboot流程
- 【转】Android调试的必杀技——反汇编
- mysql实现sequence
- 网页选项卡/滑动门代码— — — — 淘宝网站的右侧
- Vi指令大全—-编辑文件
- 【Ubuntu】用vim来合并两个文件的命令
- ios存储数据的几种方式
- struct 和 union
- C# String.Format格式说明
- NetTerm 使用简介
- C++为什么不建议使用malloc,calloc,realloc来分配内存?