LAST_INSERT_ID在插入查询中返回0

时间:2015-07-21 13:22:58

标签: mysql

请我尝试将最后一个ID插入mysql中同一行的不同列。这就是我试过的

 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    |

请问我做错了什么。很高兴知道,提前谢谢

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

根据MySQL documentationLAST_INSERT_ID()返回由最近执行的INSERT语句为AUTO_INCREMENT列设置的生成值。因此,您需要以下序列:insert - >获取最后一个插入ID - >更新。这是代码:

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

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

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