Oracle转Mysql
1.将表中时间类型的字段更改类型,比如CREATE_TIME,UPDATE_TIME
ALTER TABLE ZFTJ_HALF MODIFY CREATE_TIME TIMESTAMP WITH LOCAL TIME ZONE;
2.在需要转换的数据库页面点击左上方的工具按钮,选择数据传输,选择好数据源和目标数据库
点击开始,进行表转换
3.修改mysql中时间类型的字段,比如CREATE_TIME,UPDATE_TIME更改成datetime,长度设为0或者为空
4.mysql实现oracle序列
4.1创建序列
##创建序列
CREATE TABLE
IF NOT EXISTS `sequence` (
`name` VARCHAR (50) NOT NULL,
`current_value` INT (11) NOT NULL,
`increment` INT (11) NOT NULL DEFAULT '1'
);
4.2实现currval
##当前值
DROP FUNCTION IF EXISTS `currval`;
CREATE FUNCTION `currval` (seq_name VARCHAR(50)) RETURNS INT (11)
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE VALUE INTEGER ;
SET VALUE = 0 ;
SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name ;
RETURN VALUE;
END ;
4.3实现nextval
##下一值
DROP FUNCTION IF EXISTS `nextval`;
CREATE 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;
4.4插入序列
##插入序列
INSERT INTO `sequence` (
`name`,
`current_value`,
`increment`
)
VALUES
('ZFTJ_HALF_SEQ', 0, 1);
4.5测试
SELECT currval('ZFTJ_HALF_SEQ');
SELECT nextval('ZFTJ_HALF_SEQ');
4.6实战
对于其他表,在转换成mysql后,确认一下表中数据id的最大值,将最大值+1作为新表序列的current_value。
然后自定义序列名,最好与原序列名称保持一致,执行步骤4.4。
将原sql中的SELECT ZFTJ_SEQ.nextval AS id FROM DUAL
替换为新序列的nextval
SELECT nextval('ZFTJ_HALF_SEQ') AS ID
4.7完整sql
##创建序列
CREATE TABLE
IF NOT EXISTS `sequence` (
`name` VARCHAR (50) NOT NULL,
`current_value` INT (11) NOT NULL,
`increment` INT (11) NOT NULL DEFAULT '1'
);
##插入序列
INSERT INTO `sequence` (
`name`,
`current_value`,
`increment`
)
VALUES
('ZFTJ_HALF_SEQ', 0, 1);
##当前值
DROP FUNCTION IF EXISTS `currval`;
CREATE FUNCTION `currval` (seq_name VARCHAR(50)) RETURNS INT (11)
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE VALUE INTEGER ;
SET VALUE = 0 ;
SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name ;
RETURN VALUE;
END ;
##下一值
DROP FUNCTION IF EXISTS `nextval`;
CREATE 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;
SELECT currval('ZFTJ_HALF_SEQ');
SELECT nextval('ZFTJ_HALF_SEQ');
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix