oracle自动生成序列号_oppoa5全局主题教程

oracle自动生成序列号_oppoa5全局主题教程  前面我们介绍了MyCat的分库分表操作,那么同一张表中的数据会被保存在不同的数据库中,那么这就涉及到了主键维护的问题,此时肯定不能使用单个数据库中id自增的方式来处理了,这时我们就可以通过MyC…

  前面我们介绍了MyCat的分库分表操作,那么同一张表中的数据会被保存在不同的数据库中,那么这就涉及到了主键维护的问题,此时肯定不能使用单个数据库中id自增的方式来处理了,这时我们就可以通过MyCat中提供的几种增长的方式来实现

全局主键自增

一、本地文件自增方式

  首先我们来看下第一种方式,也就是本地文件自增方式

1. 修改分片策略

  我们原来配置的分片策略crc32slot是不支持主键自增的,所以我们需要修改为auto-sharding-long

在这里插入图片描述

2. 修改server.xml文件

  server.xml文件中的sequnceHandlerType是用来配置主键生成类型的

sequnceHandlerType值 说明
0 本地文件自增方式
1 数据库自增方式
2 本地时间戳自增方式

所以我们需要先把sequnceHandlerType的值修改为0

在这里插入图片描述

3.sequence_conf.properties介绍

  在conf目录下的sequence_conf.properties 中有序列的相关配置信息

#Wed Oct 16 07:40:44 CST 2019
COMPANY.MAXID=2000
GLOBAL.MAXID=20000
COMPANY.HISIDS=
CUSTOMER.MAXID=2000
HOTNEWS.CURID=1000
ORDER.MINID=1001
CUSTOMER.HISIDS=
HOTNEWS.MINID=1001
GLOBAL.CURID=10002
ORDER.MAXID=2000
COMPANY.CURID=1000
CUSTOMER.CURID=1000
COMPANY.MINID=1001
GLOBAL.MINID=10001
HOTNEWS.MAXID=2000
CUSTOMER.MINID=1001
GLOBAL.HISIDS=
HOTNEWS.HISIDS=
ORDER.HISIDS=
ORDER.CURID=1000

代码100分

 

主要的是GLOBAL.MAXID=20000 GLOBAL.CURID=10002 GLOBAL.MINID=10001 可以自行设置

4.测试实现

插入语句中主键字段用next value for MYCATSEQ_GLOBAL 替代

代码100分 insert into t_user(id,name,age)values(next value for MYCATSEQ_GLOBAL,"HG-93",23)
 

 

二、本地时间戳自增方式

 使用时间戳的方式,我们不需要分配策略或者选择其他的分片策略。

在这里插入图片描述

在这里插入图片描述

1.修改server.xml文件

  将server.xml文件中的sequnceHandlerType修改为2

在这里插入图片描述

2.重启mycat

  修改了配置文件,要让其生效需重启服务。

在这里插入图片描述

3.插入数据测试

 insert into t_user(id,name,age)values(next value for MYCATSEQ_GLOBAL,"HG-93",23)
 

时间戳太长将id修改为 varchar类型。

在这里插入图片描述

生成成功~

三、数据库自增方式

1.创建序列表和相关函数

  第三种方式是在Mycat所管理的某个数据库中创建一张自增的表结构来维护相关的数据,相关的脚本官方提供的有,如下:

代码100分DROP TABLE IF EXISTS MYCAT_SEQUENCE;
CREATE TABLE MYCAT_SEQUENCE (
NAME VARCHAR (50) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NULL DEFAULT 100,
PRIMARY KEY (NAME)
) ENGINE = INNODB ;
INSERT INTO MYCAT_SEQUENCE(NAME,current_value,increment) VALUES ("GLOBAL", 100000, 100);
DROP FUNCTION IF EXISTS `mycat_seq_currval`;
DELIMITER ;;
CREATE FUNCTION `mycat_seq_currval`(seq_name VARCHAR(50)) 
RETURNS VARCHAR(64) CHARSET utf8
    DETERMINISTIC
BEGIN DECLARE retval VARCHAR(64);
        SET retval="-999999999,null";  
        SELECT CONCAT(CAST(current_value AS CHAR),",",CAST(increment AS CHAR) ) INTO retval 
          FROM MYCAT_SEQUENCE WHERE NAME = seq_name;  
        RETURN retval ; 
END
;;
DELIMITER ;
DROP FUNCTION IF EXISTS `mycat_seq_nextval`;
DELIMITER ;;
CREATE FUNCTION `mycat_seq_nextval`(seq_name VARCHAR(50)) RETURNS VARCHAR(64)
 CHARSET utf8
    DETERMINISTIC
BEGIN UPDATE MYCAT_SEQUENCE  
                 SET current_value = current_value + increment 
                  WHERE NAME = seq_name;  
         RETURN mycat_seq_currval(seq_name);  
END
;;
DELIMITER ;
DROP FUNCTION IF EXISTS `mycat_seq_setval`;
DELIMITER ;;
CREATE FUNCTION `mycat_seq_setval`(seq_name VARCHAR(50), VALUE INTEGER) 
RETURNS VARCHAR(64) CHARSET utf8
    DETERMINISTIC
BEGIN UPDATE MYCAT_SEQUENCE  
                   SET current_value = VALUE  
                   WHERE NAME = seq_name;  
         RETURN mycat_seq_currval(seq_name);  
END
;;
DELIMITER ;
 

我们把这些脚本在demo2上执行

在这里插入图片描述

2.修改server.xml

在这里插入图片描述

3.修改sequence_db_conf.properties文件

  因为demo2对应的逻辑库是 dn2所以我们需要修改此处

在这里插入图片描述

4.测试

  重启服务并插入数据测试

在这里插入图片描述

 insert into t_user(id,name,age)values(next value for MYCATSEQ_GLOBAL,"hg-93",23)
 

 

主键的生成成功,除了这三种方式以外还可以通过`zookeeper`来维护自增的主键,这个可以自行实现


关注微信公众号【程序员的梦想】,专注于Java,SpringBoot,SpringCloud,微服务,Docker以及前后端分离等全栈技术。

oracle自动生成序列号_oppoa5全局主题教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11084.html

(0)
上一篇 2022-12-16
下一篇 2022-12-16

相关推荐

  • 优化Python GUI布局的秘诀——使用minsize属性

    优化Python GUI布局的秘诀——使用minsize属性在使用Python编写GUI应用程序时,我们通常需要摆放各种控件,如文本框、按钮、标签等。这些控件需要放在不同的容器中,如Frame、Grid等。在布局这些控件时,我们需要指定每个控件的大小和位置。在这个过程中,我们经常会遇到某个控件应该有足够的空间来显示内容,但它却被另一个控件挤得很小或被其他控件覆盖住了。为了解决这个问题,我们可以使用minsize属性。

    2024-04-11
    76
  • 解决SQL SERVER 2012自增ID突然断开的问题(ID突然增加1000的)

    解决SQL SERVER 2012自增ID突然断开的问题(ID突然增加1000的)最近这两年创建数据库的自增Id列总是出现一个问题,一开始自增正常,都是1、2、3递增,突然就变成1004、1005这样,一直以为程序有问题,后来多次查阅资料才在国外网站上找到问题。

    2023-02-10
    145
  • Python判断字符串为中心,输出无标点符号标题

    Python判断字符串为中心,输出无标点符号标题Python作为一种高级编程语言,在日常的编程中使用频率极高。其中Python判断字符串为中心,输出无标点符号标题是应用较为广泛的一种场景。

    2024-09-12
    24
  • HTML获取JAVA后端发来的数据_java生成html文件

    HTML获取JAVA后端发来的数据_java生成html文件
    页面: 1 @using (Html.BeginForm(“Update”, “Controller”, FormMethod.Post, 2 new { …

    2023-04-07
    150
  • Python工程师

    Python工程师Python是一种高级编程语言,具有简单、易读、易学的特点,同时可以应用于开发web应用、爬虫、数据分析、人工智能等多个领域,在工业界和学术界都有较广泛的应用。因此,Python工程师也成为了IT行业中的热门职位之一。

    2024-05-09
    74
  • dataframe删除含有特定字符的行_array转dataframe

    dataframe删除含有特定字符的行_array转dataframeCREATE TABLE #TEST(A VARCHAR(10) NULL,B VARCHAR(MAX) NULL) INSERT INTO #TESTSELECT 'A','

    2022-12-25
    150
  • 使用Python Jupyter创建幻灯片

    使用Python Jupyter创建幻灯片在各种场合下,人们都需要制作幻灯片来展示内容、交流思想、展示产品、汇报工作等。制作幻灯片需要好的美术功底、设计能力以及熟练的PPT技巧。幸运的是,使用Python Jupyter创建幻灯片是一种新的方式,既省去了制作PPT的过程,又免去了精湛的美术技巧,还能通过Python强大的数据分析功能帮助我们展现数据,从而提高效率。在本文中,我们将详细介绍如何使用Python Jupyter创建幻灯片。

    2024-07-26
    57
  • 字符的截取,Excel函数能做的比想象的可能要多!

    字符的截取,Excel函数能做的比想象的可能要多!在Excel日常使用中非常的频繁,也非常的有用,因此,office在新版本更新中也增加了更为便捷的方式。

    2023-03-01
    146

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注