如何获取即将上传的记录的ID(自动增量)?

时间:2013-11-21 15:33:28

标签: php mysql laravel laravel-3

我正在使用Laravel 3.我有一个表格和2个表格。一个表有一个AUTO INCREMENT ID,我想将此ID提供给第二个表。例如

表1

ID:自动增量
标题:

文本:

日期:

表2

ID:自动增量 t1_ID:table1-> ID

text:

有可能吗? 我想我可以获得table1中最后一条记录的ID,并在控制器中添加1,但也许有一种更简单的方法。

1 个答案:

答案 0 :(得分: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的位置而无需编写代码。