2015-07-21 122 views
0

请尝试将最后一个ID插入到mysql中同一行的不同列中。这就是我试图LAST_INSERT_ID在插入查询中返回0

Insert Query 

"INSERT INTO table(char,name) VALUES (LAST_INSERT_ID(),'KOKO')" 

This is the Output 
ID | char | name | 
1 | 0  | KOKO | 

但是,我希望,当行插入列char将插入ID价值为好;我期待的是什么

ID | char | name | 
    1 | 1  | KOKO | 

请有我做错了。会很高兴知道,在此先感谢

+0

您的'ID'列是您的主键吗?它是否设置为自动递增? –

+0

在插入LAST_INSERT_ID之前,LAST_INSERT_ID()如何知道LAST_INSERT_ID? (即,在你的例子中INSERT之前,它的求值*) –

+0

我认为函数LAST_INSERT_ID()是在插入后使用的。尝试添加更多的行,如果您持续少于您预期的1,则将其添加到LAST_INSERT_ID()。如果这不起作用,则需要在插入后的更新中填写字符。 – Giles

回答

0

不能使用LAST_INSERT_ID(),并在同一个事务中插入,因为LAST_INSERT_ID()不知道最后插入的ID值插入
之前,请尝试使用更新:

INSERT INTO table(char,name) VALUES (0,'KOKO') 
UPDATE table 
SET char = LAST_INSERT_ID() 
WHERE ID = LAST_INSERT_ID() 
+0

我会建议更新表SET SET CHAR = ID或者你只是更新一行。 – Giles

0

根据MySQL documentationLAST_INSERT_ID()返回最近执行的INSERT语句为AUTO_INCREMENT列设置的生成值。因此你需要这个序列:insert - > get last insert id - > update。这里是代码:

INSERT INTO table (char, name) VALUES (0, 'KOKO') 

UPDATE table SET `char` = LAST_INSERT_ID() WHERE `ID` = LAST_INSERT_ID() 

但事实证明,列char重复列ID这可能表明错误的DB结构。

+0

你也可以做一个触发器 –