如题,有没有办法在数据库里就实现。
两张表的id还是得连续的,假设a表中有数据
1 小红
2 小名
b表中有数据
3 小看
4 小王
那么再向a插入数据应该为
5 小黑
如题,有没有办法在数据库里就实现。
两张表的id还是得连续的,假设a表中有数据
1 小红
2 小名
b表中有数据
3 小看
4 小王
那么再向a插入数据应该为
5 小黑
方法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
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答1.8k 阅读
3 回答2k 阅读
相同的数据为什么要放到两个表中呢?如果是业务需求,那么可以用一个额外字段来区分。
如果只能两个表来满足需求的话,你可以再建一个
c
表记录当前最大id
来管理这两张表,每次插入数据前检索该值然后写入数据库中,这样就能统一了。