问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql中的 序列

发布网友 发布时间:2022-05-03 08:15

我来回答

2个回答

懂视网 时间:2022-05-03 12:37

Mysql中的序列主要用于主键,主键是递增的字段,不可重复。

Mysql与Oracle不同的是,它不支持原生态的sequence,需要用表和函数的组合来实现类似序列的功能。

1.首先创建序列的主表

/*
 Navicat Premium Data Transfer

 Source Server  : MySql_192.168.10.7
 Source Server Type : MySQL
 Source Server Version : 100113
 Source Host  : 192.168.10.7:3306
 Source Schema  : config_fao_atp

 Target Server Type : MySQL
 Target Server Version : 100113
 File Encoding  : 65001

 Date: 17/04/2020 17:38:44
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for sequence
-- ----------------------------
DROP TABLE IF EXISTS `sequence`;
CREATE TABLE `sequence` (
 `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
 `current_value` int(11) NOT NULL,
 `increment` int(11) NOT NULL DEFAULT 1,
 PRIMARY KEY (`name`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of sequence
-- ----------------------------
INSERT INTO `sequence` VALUES (‘artableSeq‘, 10021776, 1);

SET FOREIGN_KEY_CHECKS = 1;

其次创建如下三个函数,它们的功能分别是:查询当前序列值、查询下一个序列值、设置序列的起始值。

/*
 Navicat Premium Data Transfer

 Source Server  : MySql_192.168.10.7
 Source Server Type : MySQL
 Source Server Version : 100113
 Source Host  : 192.168.10.7:3306
 Source Schema  : config_fao_atp

 Target Server Type : MySQL
 Target Server Version : 100113
 File Encoding  : 65001

 Date: 17/04/2020 17:38:44
*/
-- ----------------------------
-- Function structure for currval
-- ----------------------------
DROP FUNCTION IF EXISTS `currval`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)
 DETERMINISTIC
BEGIN
DECLARE value INTEGER; 
SET value = 0; 
SELECT current_value INTO value 
FROM sequence
WHERE name = seq_name; 
RETURN value; 
END
;;
DELIMITER ;

-- ----------------------------
-- Function structure for nextval
-- ----------------------------
DROP FUNCTION IF EXISTS `nextval`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)
 DETERMINISTIC
BEGIN
UPDATE sequence
SET current_value = current_value + increment 
WHERE name = seq_name; 
RETURN currval(seq_name); 
END
;;
DELIMITER ;

-- ----------------------------
-- Function structure for setval
-- ----------------------------
DROP FUNCTION IF EXISTS `setval`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` FUNCTION `setval`(seq_name VARCHAR(50), value INTEGER) RETURNS int(11)
 DETERMINISTIC
BEGIN
UPDATE sequence
SET current_value = value 
WHERE name = seq_name; 
RETURN currval(seq_name); 
END
;;
DELIMITER ;

3.最后初始化序列数据,测试序列功能。

----添加一个sequence名称和初始值,以及自增幅度 添加一个名为filegenSeq 的自增序列
INSERT INTO sequence VALUES (‘filegenSeq‘, 10000000, 1);

---设置指定sequence的初始值 这里设置filegenSeq 的初始值为10
SELECT SETVAL(‘filegenSeq‘, 10000000);

--查询指定sequence的当前值 这里是获取filegenSeq当前值
SELECT CURRVAL(‘filegenSeq‘); 

--查询指定sequence的下一个值 这里是获取filegenSeq下一个值
SELECT NEXTVAL(‘filegenSeq‘); 

MySql中序列的应用和总结

标签:ext   exists   config   ora   varchar   HERE   insert   sch   inno   

热心网友 时间:2022-05-03 09:45

不清楚你问的是什么。

唯一可以用主键 PRIMARY KEY ,
主键如何设置加上 Primary key或者结束定义的地方加上 Create Table tablename(................,Primary key(columnname))

或者用唯一约束unique关键字

序列可以用自增字段Auto_Increment
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我是男生,18岁,两夹有红血丝, 鼻子有黑头,脸部还有疙瘩,我要用什么洁... 18岁.油性皮肤. 男士。 有什么洗面奶能有效去油顺便去黑头暗疮之类的... 我今年18岁是油性皮肤,尤其是鼻子和鼻子旁边的脸狭很容易出油。最近用... 祛痘后留下黑色痘印应该怎么消除? 2xl是多大尺码180还是175 2xl是175吗 年轻人最核心的能力是什么? 年轻的时候蕞核心的能力是什么? 人在年轻的时候蕞核心的能力是什么 尿酸高代表什么 经常晚十二点后睡觉到底对身体有多大危害? 我初三一直都是每天凌晨1点睡觉 中午回家睡20分钟 这样对身体发展有没有什么影响? 常年凌晨三四点睡会对身体有什么影响? 每天晚上两点睡对身体有什么影响 每天凌晨两点多睡觉对身体有什么样的影响? 经常熬夜到一点钟睡觉有什么后果 经常熬夜到凌晨会有什么后果? 请问发晶好还是钛晶好 金发晶功效 金发晶功效 每天凌晨1点睡到早晨8点对身体有什么危害吗? 金发晶和钛晶有什么区别 每天凌晨1点睡对身体会有什么危害? 钛晶是不是就是发晶,他们有什么不一样啊? 钛晶是不是就是发晶,他们有什么不一样啊? 每天凌晨1-2点睡觉会 对身体好吗为什么? 钛晶和发晶其它种类区别 每天晚上都凌晨一二点钟睡觉早上六点起床对身体有多大危害? 钛晶和发晶有什么区别?哪个更好一些? 钛晶,金发晶是同一种水晶吗? 这两种要戴在哪只手? 如何进入无尘车间 放的部首到底是方还是反文? 谁能帮我画个进入无尘车间的流程图吗?在线等,谢谢 放部首是什么偏旁 无尘车间净化工程的流程是怎样的? 无尘车间如何建造,无尘车间建造流程? 求无尘车间施工的详细步聚 放的部首? 无尘净化工程的工作流程是怎样的 无尘车间工作主要有哪些工艺过程 进入洁净无尘车间有哪些要求? 洗衣机盖子弹簧掉了怎样安装? 我的耳朵进水了,而且可能比较深,试了几种方法还是没出来,怎么办啊? 耳朵进水怎么办啊? 梦见自己骑在一头黄牛身上 苏洵的《六国论》的相关历史知识 如何使用mysql实现oracel中的序列 中性粒细胞百分比偏低的原因 六国论的每一段段意 中性粒细胞百分比底什么原因