繁体   English   中英

有没有办法在两个不同的表中添加多个具有相同 ID 的值?

[英]Is there a way to add multiple values with same ID in two different tables?

使用 PHP 和 mySQL,我需要在 2 个 mysql 表中添加多个值:第一个表将包含更重要的信息,第二个将包含不太重要的信息。

更清楚地说,一个元素会将他的信息分成两个表。

(出于某些原因,我需要这个,但其中两个是:使第一个表的权重尽可能小,第二个表将存储在短时间内将被擦除的数据(同时第一个表保留它存储的所有数据)。 )

在最好的情况下,我想在每个表中添加一个关于每个表中具有相同 id 的项目/元素的行。 像这样的东西:

表1 id|data_1_a|data_1_b|...

表2 id|data_2_a|data_2_b|...

因此,如果我在表 1 中添加一个 ID 为“12345”的元素,它会在表 2 中添加相同 ID 为“12345”的数据。

为此,我想到了两种解决方案:

  1. 自己为每个元素创建 ID(而不是在表 1 上使用 auto_increment)。 缺点是每次生成 ID 时检查表中是否不存在 ID 可能会更好......
  2. 在表 1 上添加元素,使用 $db->lastInsertId(); 获取其 ID; 并使用它在表 2 上添加元素的数据。缺点是我必须一个元素一个元素地添加才能获取所有 ID,而大多数时候我想添加很多元素(比如一个、两个或三百!)一次

也许有更好的方法来实现这一目标?

lastInsertId()报告执行的最后一个INSERT语句生成的第一个值。 假设当您插入许多行时,它们在第一个值之后被赋予连续的 id 值是可靠的。 例如,MySQL JDBC 驱动程序依赖此假设,因此它可以报告生成的 id 值集。

仅当您故意设置innodb_autoinc_lock_mode=2 (交错)时,此假设才会中断。 有关详细信息,请参阅https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html

但如果这是我的任务,我仍然会选择使用一张桌子。 当您发现不再需要某些列时,使用UPDATE将它们设置为 NULL。 这将消除您在确保跨两个表使用相同 id 时面临的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM