You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为两张表生成独立ID,新增数据时ID值保持正确

解决两张表独立ID管理及新增数据ID正确性问题

核心思路

要让mine和mine_bets两张表的ID完全独立,确保新增数据时ID不重复且自动递增,最可靠的方式是利用数据库的自增主键特性,也可根据需求自定义ID规则。

推荐方案:自增主键配置

分别给两张表的ID字段设置自增主键,数据库会自动维护各自独立的ID序列:

  • 配置mine表的id字段:
    ALTER TABLE mine MODIFY COLUMN id INT AUTO_INCREMENT PRIMARY KEY;
    
  • 配置mine_bets表的bet_id字段:
    ALTER TABLE mine_bets MODIFY COLUMN bet_id INT AUTO_INCREMENT PRIMARY KEY;
    

之后新增数据时无需手动指定ID,数据库会自动分配当前表的下一个递增ID,示例:

-- 给mine表新增数据
INSERT INTO mine (name) VALUES ('New Real Bet');
-- 给mine_bets表新增数据
INSERT INTO mine_bets (name) VALUES ('200');

备选方案:自定义ID区间(适合特殊规则场景)

如果需要手动控制ID范围(比如让mine_bets的ID从10000开始),可每次新增时计算下一个ID:

  • 新增mine表数据:
    INSERT INTO mine (id, name) 
    SELECT COALESCE(MAX(id), 0) + 1, 'New Fake Bet' FROM mine;
    
  • 新增mine_bets表数据:
    INSERT INTO mine_bets (bet_id, name) 
    SELECT COALESCE(MAX(bet_id), 9999) + 1, '300' FROM mine_bets;
    

⚠️ 注意:这种方式在高并发写入场景下可能出现ID冲突,仅适合低并发或特殊业务规则场景。

额外优化:查询时区分数据来源

如果需要在union查询中明确区分ID所属表,可新增来源标识字段:

SELECT id, name, 'mine' AS data_source FROM mine 
UNION ALL
SELECT bet_id AS id, name, 'mine_bets' AS data_source FROM mine_bets;

(用UNION ALL代替UNION,无需去重时性能更优)

内容的提问来源于stack exchange,提问作者Zain Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:07:12