首页 > 数据库 >MySQL数据库A表和B表id冲突解决办法?

MySQL数据库A表和B表id冲突解决办法?

时间:2023-05-30 15:15:08浏览次数:44  
标签:解决办法 name processing detail id MySQL null order

方法1:不要定义自增长,用触发器来实现。
方法2:不要定义自增长,两张表共享同一个sequence。(规则唯一)
方法3:自增长,但是一张表是奇数,另一张全是偶数

基于触发器的方法三:(对于现有系统的补救方案),最好的方案还是方法二使用同一个自增sequence获取

-- 修改A表id 别和B表id重复

-- 查询最大的id
select max(order_id),max(order_code) from trade_order o ;

select max(processing_detail_id),max(processing_detail_code) from processing_order_detail o ;

-- 解决办法
-- 触发器 INSERT 语句触发 (首先保证是一个最大id是偶数,另一个是奇数,如果不是用测试数据新增修正id)
-- trade_order 偶数id,processing_order_detail 奇数id

-- 创建触发器
drop trigger if exists trade_order_id;

DELIMITER $$

CREATE TRIGGER trade_order_id

BEFORE INSERT ON trade_order

FOR EACH ROW

BEGIN


SELECT IFNULL(max_id, 0) + 2

INTO @id FROM

(SELECT MAX(order_id) max_id FROM trade_order) maxid;


SET NEW.order_id := @id;

END;

$$

DELIMITER ;


-- 创建触发器
drop trigger if exists processing_order_detail_id;
DELIMITER $$

CREATE TRIGGER processing_order_detail_id

BEFORE INSERT ON processing_order_detail

FOR EACH ROW

BEGIN

SELECT IFNULL(max_id, 0)

INTO @id FROM

(SELECT MAX(processing_detail_id) max_id FROM processing_order_detail) maxid;

SET NEW.processing_detail_id := @id + 2;


END;

$$

DELIMITER ;




-- 查询最新十条数据
select * from trade_order order by order_id desc limit 10;
select * from processing_order_detail  order by processing_detail_id desc limit 10;


-- 新增数据测试(下面两个表id都是自增主键)
INSERT INTO trade_order ( order_code, buyer_user_id, buyer_company_id, seller_id, seller_company_id,
                         manager_id, seller_manager_id, buyer_user_name, buyer_company_name, seller_name,
                         seller_company_name, manager_name, seller_manager_name, order_type, bz_type, order_status,
                         review_status, is_upload_contract, contract_img, is_payment, payment_img, is_invoice,
                         invoice_img, is_sign, sign_img, trade_time, close_time, expire_time, close_cancel_type,
                         cancel_reason, cancel_remark, reviewer_id, review_time, review_remark, order_origin,
                         contract_id, base_price_type, base_price_method, base_price_other, quality_standard,
                         quality_standard_other, quality_require, contract_effective_date, processing_required,
                         project_id, project_name, processing_status, create_operation_id, update_operation_id,
                         create_time, update_time, is_delete, version, time_flag)
VALUES ( CONCAT('DD',substring(md5(rand()), 1, 18)), 102804, 101904, 100090, 100090, 127, null, null, '测试买方公司', null,
        '测试卖方公司', '邹凯婷', null, 53, null, 7, 113, 0, null, 0, null, 0, null, 0, null, null, null, null, null, null,
        null, 1, '2023-04-13 10:23:29', null, 118, null, 460, 342, null, 348, '质量标准说明', null, '2023-06-12 08:00:00', 0,
        null, null, 424, 0, 1, '2023-04-13 10:22:56', '2023-04-13 10:23:29',1, 2, null);

INSERT INTO processing_order_detail ( processing_detail_code, processing_id, category,
                                     order_detail_id, weight, check_weight, order_quantity_total, item_web_desc,
                                     item_app_desc, cid, cid_name, props, props_name, binds, binds_name, properties,
                                     properties_name, meterage_unit_id, meterage_unit_en, meterage_unit_cn,
                                     currency_unit_id, currency_unit_en, currency_unit_cn, spec_remark, remark,
                                     create_operation_id, create_time, update_operation_id, update_time, deleted)
VALUES ( CONCAT('MX',substring(md5(rand()), 1, 18)), 1080, '原料', null, 111.00000, 33.44000, 111.00000,
        '内径:1mm;产品用途:产品_牌号:3105;状态:其他;规格:22mm_empty_empty_empty_empty',
        '内径:1mm;产品用途:产品_牌号:3105;状态:其他;规格:22mm_empty_empty_empty_empty', 5, '品种:铝板带;品名:冷轧卷;', ';221:689;222:717;',
        '内径:1mm;产品用途:产品;', null, null, ';2:430;3:214;4:524;', '牌号:3105;状态:其他;规格:22mm;', 87, 't', '吨', 1, 'Yuan', '元',
        null, null, 1, '2023-03-20 17:38:35', 1, '2023-03-20 17:54:39', 1);

  

标签:解决办法,name,processing,detail,id,MySQL,null,order
From: https://www.cnblogs.com/yxgmagic/p/17443261.html

相关文章

  • nacos服务下线操作时报错:The Raft Group [naming_instance_metadata] did not find th
    【问题描述】caused:errCode:500,errMsg:dometadataoperationfailed;caused:com.alibaba.nacos.consistency.exception.ConsistencyException:TheRaftGroup[naming_instance_metadata]didnotfindtheLeadernode;caused:TheRaftGroup[naming_instance_metad......
  • springboot使用jdbc连接mysql(不用配置文件)
     1、连接mysql的工具类:packagecom.jzproject.common.mysql;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importorg.springframework.jdbc.core.JdbcTemplate;importjava.sql.*;importjava.util.ArrayList;importjava.util.HashMap;......
  • Android 12 startActivity梳理
    前面梳理了WM中Window容器的概念,今天梳理一下startActivity的流程,看一下window容器的体现。其实在server端Window最终都会表现为WindowState对象。而之所以存在划分层级的window容器,是为了有层级的管理,目的是实现Android的一些列feature,如:任务栈Task,Task引出Activity的生命周期......
  • spingBoot连接mysql数据库
    1.最终效果 字符串+数据库中id为2的手机号 2.代码设置了响应的内容的格式  3mysql数据库内表内容数据库名称qikegu_demo ----------------------------------------------------------------------------------------------------------------------------------......
  • npm install ERR_INVALID_URL错误
    我在terminal中设置了proxy后,开启proxyon后,执行npminstall包错误: 把proxyoff后,错误又没有了,不知道是啥问题。下面的文章可能有作用:https://weekendprojects.dev/posts/how-to-fix-npm-err_invalid_url/#:~:text=The%20%E2%80%9CNPM%20ERR_INVALID_URL%E2%80%9D%20error%20occ......
  • Mysql Php 推送获取随机数据解决分页重复问题
    或许你已经看过很多博主写的文章,要不就是抄袭,要不就是给你一个下面的语句,随机是随机了,但是多来两页,你会发现前面出现的数据在第三页甚至第二页就出现了select*fromtableorderbyrand()这是因为rand()机制的问题,他每次都会打乱数据给你,然后你去取的时候0-10,11-20都有可能......
  • 源码分析MySQL的"commit"是怎么"commit"的
    MySQL的"commit"命令提交事务时,内部会进行两阶段提交,这篇文章基于MySQL8.0.33源码分析一下MySQL的两阶段提交。整体逻辑整理如下:Prepare阶段: 1.BinlogPrepare 1.1获取上一个事务最大的lastcommitted时间戳 2.InnodbPrepare 2.1事务状态设置为prepared 2.2释放......
  • idea项目设置鼠标右键点击文件夹通过IDEA打开
    每次打开idea项目是每次都要打开idea再手动选择项目,直接设置成右键打开会很方便。效果图:首先win+R输入regedit打开注册表打开注册表后找到如下路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell右键->新建->项(k),命名为IDEA3. 在IDEA里,新建字符串值,起名......
  • idea项目设置鼠标右键点击文件夹通过IDEA打开
    每次打开idea项目是每次都要打开idea再手动选择项目,直接设置成右键打开会很方便。效果图:首先win+R输入regedit打开注册表打开注册表后找到如下路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell右键->新建->项(k),命名为IDEA3. 在IDEA里,新建字符串值,起名......
  • tomcat+https /mysql+ssl /nginx+https
    本文简要介绍CA和证书的基础知识,并演示openssl-1.0.2d的安装,CA证书生成、用户证书申请、使用CA签发用户证书等内容。实验环境操作系统:Windowsopenssl版本:openssl-1.0.2d(官网获取)1基础知识1.1PKI为解决Internet的安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的......