从表#1获取最后一个id以确定表#2上的新ID

时间:2012-06-12 08:16:27

标签: php mysql auto-increment multiple-tables

我有一个旧的注册系统和一个新系统。 (两张桌子)。
旧系统包含旧类别,新系统包含一些尚未在旧系统中实现的新类别 因此,将所有内容移动到其中一个系统不是一种选择。

我的问题:
我需要连接这两个表,以便ID作为“自动增量”运行,并以某种方式相互跟随。

以下是一个场景:
// table#1 =旧系统(汽车)
//表#2 =新系统(拖拉机,卡车,海运)

新车在表#1 中注册并获得ID:13579,
然后一些其他车辆在表#2 中注册,并且应该得到ID:13580,
当一辆新车再次在表#1 中注册时,它应该得到ID:13581 等等...

在我看来,它是这样的:
在将新车辆添加到其中一个表格之前,总是在另一个表格中查找并检查哪一个是最后一个/最高ID,并在设置新ID之前执行 +1 ... < / p>

更新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我用附加数据更新该记录......

这是一个可以接受的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我认为你可以使用这种方法。

或者您可以使用以下字段创建新表:

id (auto increment), table_id, table_name

并保存到其中table_id - 是您的表实体的id,table_name - 是一些属性,用于确定哪个表属于此ID。在选择期间,您必须使用此表来确定要使用的ID。这将避免id计算。