环境描述:
有多个数据库,包含了同样的一张表A,能字段有id int,name varchar(200),并且Id是主键但是不是自增的
问题:
如何能让每个数据库插入的数据在这些数据库中的这个表A唯一,即数据库1的A表有1022这个Id,那么其他数据库中A表就没有这个值;还有就是Id是程序中自增
我的解决方案是:
新建一张种子表,插入数据的时候先将种子表的字段+1,然后取出字段-1的值,最后再插入到对应的数据库的A表中
不知道哪位还有更好的办法,前提是只能用int型的id
------解决方案--------------------
就用你说的,使用种子表吧。这种方法也比较常见
------解决方案--------------------
就是由前端来统一分配,在数据库层毕竟有多个库,跨库访问有很多问题,但是前端只有一个入口,可以控制好点,假设你的几个库都是一样的,主要用来做负载均衡,那么可以用一个函数来分配数据到特定的库中。假设有4个库,那么最简单的方法是取余操作,xx%4=1 放入A库的A表,xx%4=2 放如B库的a表,以此类推
------解决方案--------------------
种子表是一种方案,但类似这样的多个数据库公用id,最好还是带上数据库特有标示比较好,例如1000001,2000001,这样既可以整合到一起,又可以独立维护,不是更方便吗