sqlserver迁移到mysql,解决函数和序列的差异

将数据库从sqlserver迁移到mysql

说明:本篇仅仅代表本人遇到的情况,不保证适用于所有的场景

1、数据迁移

使用navicat进行数据传输。首先新建一个mysql数据库,用来作为目标库,然后使用navicat的迁移工具
在这里插入图片描述然后选择源库和目标库:
在这里插入图片描述点击下一步:
在这里插入图片描述可以看到这种方式是不能导出表和序列的。在mysql中没有序列这种说法,我们可以通过另外的方式比如函数来实现序列的效果。

2、实现序列效果

数据的迁移很简单,毕竟基本都是用的同一套标准。主要是在项目中对数据库的连接方式和xml中的sql改造。

我们可以先看一下在sqlserver中序列的使用:
在这里插入图片描述可以看到在插入的时候,folderId字段使用了序列 SEQ_INFO_FOLDER 的值,使用的语句是:

select next value for SEQ_INFO_FOLDER

但是在mysql中没有序列,我们可以先在mysql数据库中创建一张表sys_sequence表(名字可以自己随便取),添加两个字段
在这里插入图片描述用来模拟序列的名称和值。
然后再自定义函数:
在这里插入图片描述
currval():

CREATE DEFINER=`root`@`%` FUNCTION `currval`(`name` text) RETURNS decimal(10,0)
begin
  declare value Integer;
  set value = 0;
  select seq_value into value
  from sys_sequence
  where seq_name = name collate utf8_general_ci;

  if(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值