2009-02-18 29 views

Trả lời

52

This là những gì bạn đang tìm kiếm:

LAST_INSERT_ID() 

Đáp lại bình luận của OP, tôi tạo ra các bài kiểm tra băng ghế dự bị sau:

CREATE TABLE Foo 
(
    FooId INT AUTO_INCREMENT PRIMARY KEY 
); 

CREATE TABLE Bar 
(
    BarId INT AUTO_INCREMENT PRIMARY KEY 
); 

INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 
INSERT INTO Bar() VALUES(); 

CREATE TRIGGER FooTrigger AFTER INSERT ON Foo 
    FOR EACH ROW BEGIN 
     INSERT INTO Bar() VALUES(); 
    END; 

INSERT INTO Foo() VALUES(); SELECT LAST_INSERT_ID(); 

này trả về:

+------------------+ 
| LAST_INSERT_ID() | 
+------------------+ 
|    1 | 
+------------------+ 

Vì vậy, nó sử dụng LAST_INSERT_ID() của bảng gốc chứ không phải bảng INSERT ấn vào bên trong cò.

Chỉnh sửa: Tôi nhận ra sau tất cả thời gian này kết quả của câu trả lời của tôi là sai, mặc dù kết luận ở cuối là chính xác. Tôi đã cập nhật kết quả thành giá trị chính xác.

+0

Cảm ơn Sean. Làm thế nào nó hoạt động khi bảng tôi chèn dữ liệu vào có một kích hoạt chèn dữ liệu vào một bảng khác có trường tự động hóa quá? Nó sẽ trả lại ID của bảng gốc hoặc bảng bị ảnh hưởng bởi trình kích hoạt? – kristof

+0

Cảm ơn Sean đã kiểm tra – kristof

+0

Cảm ơn ... Đối với câu trả lời –

0

mở MySql lệnh loại SELECT LAST_INSERT_ID(); sau đó ENTER

Các vấn đề liên quan