插入自动数字后插入

时间:2013-03-20 07:34:23

标签: mysql sql sql-insert

我必须像这样插入两个:

INSERT INTO CONVERSATION (issue,...) VALUES ('Presentation',...);
INSERT INTO CONVERSATIONMESSAGES VALUES (ConversationId, 'Hello everybody',...);

在第一个表中,唯一的PK是自动数字字段(ConversationId),稍后我必须知道要在第二个表中插入的自动数字字段。

有没有办法做到这一点?像我做第一个插入时选择*做第二个插入来知道它吗?

非常感谢,我希望我能正确解释。

2 个答案:

答案 0 :(得分:6)

您可以使用LAST_INSERT_ID()在表格中插入最后生成的自动增量,例如

INSERT INTO CONVERSATION (issue,...) VALUES ('Presentation',...);
INSERT INTO CONVERSATIONMESSAGES VALUES (LAST_INSERT_ID(), 'Hello everybody',..);

但如果您有并发INSERT,则有时会失败。

尝试为此创建存储过程

DELIMITER $$
CREATE PROCEDURE ProcNAME(...PARAMETERS HERE...)
BEGIN
    INSERT INTO CONVERSATION (issue,...) VALUES ('Presentation',...);
    SET @lstID = (SELECT MAX(ConversationId) FROM CONVERSATION);
    INSERT INTO CONVERSATIONMESSAGES VALUES (@lstID, 'Hello..',..);
END
DELIMITER ;

答案 1 :(得分:0)

declare @retVal as int

INSERT INTO CONVERSATION (issue,...) VALUES ('Presentation',...);

@retval=SELECT SCOPE_IDENTITY();

INSERT INTO CONVERSATIONMESSAGES VALUES (ConversationId, 'Hello everybody',...);

您将在@revVal中获取最后一个插入的行数值,以便在其他表中使用