我有一箇舊的註冊系統和一個新的註冊系統。 (兩張桌子)。
舊的系統擁有一箇舊的類別,而新的系統擁有一些舊類別尚未實現的新類別。
因此,將所有內容移至其中一個系統目前不是一種選擇。從表#1中獲取最後一個ID以阻止表#2的新ID
我的問題:
我需要將兩個表連接,因此ID的「自動增量」操作,將按照對方莫名其妙。
這裏是一個情形:
//表#1 =舊系統(汽車)
//表#2 =新的系統(拖拉機,卡車,船舶)
新車註冊於表#1並獲取ID:13579,
和其它一些車輛在表#2註冊和應該得到的ID:13580,
當新車在註冊表#1再次,它應該得到ID:13581.
等等...
在我心中它是這樣的:
右鍵添加新的車輛進入一個表的前,總是做另一個表的查找和檢查哪一個是最後一個/最高ID和設置新的ID之前做+1 ...
UPDATE 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查詢結果爲第二個表創建insert語句時執行+1。 – Eli
如果是這樣的話,用[tag:homework]標記你的問題,併發布你已經使用的任何'php' /'sql'。 –
如果許多用戶可能同時添加車輛,則應將讀取前一個ID的請求和請求設置爲事務中的新ID並使用鎖來避免併發問題。 – Aurel