簡體   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