2015-07-21 117 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

你也可以做一個觸發器 –