Mysql 需要两张表的自增主键不重复
怪我咯
怪我咯 2017-04-17 13:16:33
[MySQL讨论组]

如题,有没有办法在数据库里就实现。
两张表的id还是得连续的,假设a表中有数据
1 小红
2 小名
b表中有数据
3 小看
4 小王
那么再向a插入数据应该为
5 小黑

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
迷茫

相同的数据为什么要放到两个表中呢?如果是业务需求,那么可以用一个额外字段来区分。
如果只能两个表来满足需求的话,你可以再建一个c表记录当前最大id来管理这两张表,每次插入数据前检索该值然后写入数据库中,这样就能统一了。

阿神

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

drop table t1;
drop table t2;
SET @@auto_increment_increment=2;
SET @@auto_increment_offset=1;
create table t1(
        id BIGINT UNSIGNED AUTO_INCREMENT,
        foo varchar(10),
        primary key(id)
);

insert into t1(foo) values('a');
insert into t1(foo) values('b');
insert into t1(foo) values('c');

SET @@auto_increment_increment=2;
SET @@auto_increment_offset=2;

create table t2(
        id BIGINT UNSIGNED AUTO_INCREMENT,
        foo varchar(10),
        primary key(id)
);

insert into t2(foo) values('a');
insert into t2(foo) values('b');
insert into t2(foo) values('c');

select 't1',id,foo from t1 union all select 't2',id,foo from t2;

t1    1    a
t1    3    b
t1    5    c
t2    2    a
t2    4    b
t2    6    c
阿神

可以啊,自增的时候A表从1开始每次增2,B表从2开始每次增长2,那么
A:1,3,5,7,9,11....
B:2,4,6,8,10,12

不就是连续的吗?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号