【发布时间】:2012-06-12 08:16:27
【问题描述】:
我有一个旧的注册系统和一个新的。 (两张桌子)。
旧系统包含一个旧类别,新系统包含一些新类别,这些新类别还不能在旧系统中实现。
因此,目前无法将所有内容移至其中一个系统。
我的问题:
我需要连接这两个表,以便 ID 以“自动增量”的方式运行,并且会以某种方式相互跟随。
这是一个场景:
// table#1 = 旧系统(汽车)
// table#2 = 新系统(拖拉机、卡车、船舶)
一辆新车在 table#1 中注册并获得 ID:13579,
然后在 table#2 中注册了一些其他车辆,并且应该获得 ID:13580,
当一辆新车再次在 table#1 中注册时,它应该得到 ID : 13581。
等等……
在我看来是这样的:
在将新车添加到其中一个表之前,始终在另一个表中查找并检查哪个是最后/最高 ID,并在设置新 ID 之前执行 +1...
更新 20120614:
这是我想出的一种解决方案:
$qry_tbl1 = mysql_query('SELECT MAX(id) AS tbl1_max_id FROM tbl1');
$get_tbl1 = mysql_fetch_assoc($qry_tbl1); extract($get_tbl1);
$qry_tbl2 = mysql_query('SELECT MAX(id) AS tbl2_max_id FROM tbl2');
$get_tbl2 = mysql_fetch_assoc($qry_tbl2); extract($get_tbl2);
$new_max_id = max(array($tbl1_max_id,$tbl2_max_id)) + 1;
这不是一个好的解决方案,但却是我唯一需要解决的问题。
用户点击提交按钮后,我立即执行此操作并插入新记录。
然后,在脚本的下方,基于$new_max_id,我用其他数据更新该记录...
这是一个可接受的解决方案吗?
【问题讨论】:
-
一种方法是查询 table1 中的最后一个 ID,并在使用 table1 查询结果为第二个表创建插入语句时执行 +1。
-
如果是这种情况,请用homework 标记您的问题,然后发布您已经提供的任何
php/sql。 -
如果很多用户可能同时添加车辆,你应该将读取前一个id的请求和设置新id的请求分组在一个事务中,并使用锁来避免并发问题。
-
这不是家庭作业。而且我还没有任何 php 代码,因为我不知道从哪里开始......我可以依靠这个方法吗:
SELECT MAX(ID) AS last_id FROM other_table然后做$new_id = $get['last_id'] + 1;
标签: php mysql auto-increment multiple-tables