繁体   English   中英

LAST_INSERT_ID在插入查询中返回0

[英]LAST_INSERT_ID returns 0 in an insert query

请尝试将最后一个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    |

请问我做错了什么。 会很高兴知道的,在此先感谢

您不能使用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()

根据MySQL文档LAST_INSERT_ID()返回最近执行的INSERT语句为AUTO_INCREMENT列设置的生成值。 因此,您需要以下顺序: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结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM