我必须像这样做两次插入:
INSERT INTO CONVERSATION (issue,...) VALUES ('Presentation',...);
INSERT INTO CONVERSATIONMESSAGES VALUES (ConversationId, 'Hello everybody',...);在第一个表中,唯一的主键是一个自动数字字段(ConversationId),稍后我必须知道这个自动数字字段才能插入到第二个表中。
有没有办法做到这一点?例如,当我执行第一次插入时,执行一次select *,以便知道第二次插入时的情况?
非常感谢,我希望我的解释是正确的。
发布于 2013-03-20 15:35:24
您可以使用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 ;发布于 2013-03-20 15:38:12
declare @retVal as int
INSERT INTO CONVERSATION (issue,...) VALUES ('Presentation',...);
@retval=SELECT SCOPE_IDENTITY();
INSERT INTO CONVERSATIONMESSAGES VALUES (ConversationId, 'Hello everybody',...);您将在@revVal中获得最后插入的行号号值,以便在其他表中使用
https://stackoverflow.com/questions/15517782
复制相似问题