mysql实现sequence
来源:互联网 发布:linux打包文件 编辑:程序博客网 时间:2024/06/08 18:11
原文地址:http://pengqb.iteye.com/blog/709503
如何在mysql数据里使用Oracle序列语法.NEXTVAL和.CURVAL.
假设在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)
BEGIN
UPDATE tas_sequence
SET current_value = current_value + increment
WHERE 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)
BEGIN
UPDATE tas_sequence
SET current_value = value
WHERE 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_music
for each row begin
if 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实现
- Python基础编程(八)异常
- poi+jdbc实现从数据库中导出表的数据字典结构(单个sheet和多个sheet供你选择),并且生成excel文档,作者:vipyhd
- Linux vmstat命令实战详解
- php引用与销毁变量
- 闭包
- mysql实现sequence
- 哈尔滨突降冰雹如黄豆大小 降雨天气将持续到21日
- Android HAL实现的三种方式(1) - 基于JNI的简单HAL设计
- jmeter入门使用
- 用java实现二叉树非递归的前序,中序,后序遍历算法
- http包 详解
- 古诗词中“草”的意象
- phonegap3.4插件开发入门例子
- 类与对象(友元)。。。2014.5.19