2013-11-21 91 views
0

我正在使用Laravel 3.我有一個表格和2個表格。一張桌子有一個AUTO INCREMENT ID,我想把這個ID給第二張桌子。例如。如何獲取要上傳記錄的ID(自動增量)?

table1的

ID:自動遞增
稱號:

文本:

日期:

表2

ID:自動遞增 t1_ID:table1-> ID

正文:

有沒有可能? 我想我可以得到table1中最後一條記錄的ID,並在控制器中添加1,但也許有一個更簡單的方法。

+0

請在此處張貼您的代碼 – George

+0

D您想在插入表A之前傳遞ID還是之後? – Stoleg

+2

不要試圖預測最後一個ID + 1,將該記錄插入到table1及其自動增量列中,獲取用於該插入的最後一個ID,然後使用檢索到的自動增量值將該記錄添加到table2 –

回答

0

解決方案#1

這聽起來像你需要使用觸發器。爲了安全起見,您應該使用AFTER INSERT觸發器,因爲您無法預測在INSERT過程中發生某些無法預料的錯誤時自動增量是否會增加一次以上。

或許觸發應該是這個樣子:

DELIMITER $$ 
CREATE TRIGGER table1_ai AFTER INSERT ON table1 FOR EACH ROW 
BEGIN 
    INSERT INTO table2 (t1_ID) VALUES (NEW.ID); 
END; $$ 
DELIMITER ; 

通過這種方式,ID被安全地放置在table2,明知ID在table1實際使用。

解決方案#2

您可以使用information_schema檢索ID。怎麼樣?

假設表格是mydb.table1。您可以快速獲取下一個AUTO_INCREMENT值是這樣的:

SELECT auto_increment FROM information_schema.tables 
WHERE table_schema='mydb' and table_name='table1'; 

如果mydb.table1體驗高容量的寫入

EPILOGUE

你應該SOLUTION #1去,因爲執行觸發這可能是危險的檢索將處理ID在兩個表中的位置,而不必編碼。

+0

更重要的是,觸發器將保證自動增量值不會在行插入到表B中時發生改變。 – Stoleg