我正在使用Laravel 3.我有一个表格和2个表格。一个表有一个AUTO INCREMENT ID,我想将此ID提供给第二个表。例如
表1
ID:自动增量
标题:
文本:
日期:
表2
ID:自动增量 t1_ID:table1-> ID
text:
有可能吗? 我想我可以获得table1中最后一条记录的ID,并在控制器中添加1,但也许有一种更简单的方法。
答案 0 :(得分:0)
听起来你需要使用触发器。为了安全起见,您应该使用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的位置而无需编写代码。