我正在使用Laravel 3.我有一個表格和2個表格。一張桌子有一個AUTO INCREMENT ID,我想把這個ID給第二張桌子。例如。如何獲取要上傳記錄的ID(自動增量)?
table1的
ID:自動遞增
稱號:
文本:
日期:
表2
ID:自動遞增 t1_ID:table1-> ID
正文:
有沒有可能? 我想我可以得到table1中最後一條記錄的ID,並在控制器中添加1,但也許有一個更簡單的方法。
我正在使用Laravel 3.我有一個表格和2個表格。一張桌子有一個AUTO INCREMENT ID,我想把這個ID給第二張桌子。例如。如何獲取要上傳記錄的ID(自動增量)?
table1的
ID:自動遞增
稱號:
文本:
日期:
表2
ID:自動遞增 t1_ID:table1-> ID
正文:
有沒有可能? 我想我可以得到table1中最後一條記錄的ID,並在控制器中添加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
實際使用。
您可以使用information_schema檢索ID。怎麼樣?
假設表格是mydb.table1
。您可以快速獲取下一個AUTO_INCREMENT值是這樣的:
SELECT auto_increment FROM information_schema.tables
WHERE table_schema='mydb' and table_name='table1';
如果mydb.table1
體驗高容量的寫入
你應該SOLUTION #1
去,因爲執行觸發這可能是危險的檢索將處理ID在兩個表中的位置,而不必編碼。
更重要的是,觸發器將保證自動增量值不會在行插入到表B中時發生改變。 – Stoleg
請在此處張貼您的代碼 – George
D您想在插入表A之前傳遞ID還是之後? – Stoleg
不要試圖預測最後一個ID + 1,將該記錄插入到table1及其自動增量列中,獲取用於該插入的最後一個ID,然後使用檢索到的自動增量值將該記錄添加到table2 –