在MySQL我在mysql中的表中插入用Insert命令行,現在我想最後插入行的id,我使用Mysql的最後插入的行ID
SELECT LAST_INSERT_ID() ;
但它給我0作爲每次輸出。 請幫我。
在MySQL我在mysql中的表中插入用Insert命令行,現在我想最後插入行的id,我使用Mysql的最後插入的行ID
SELECT LAST_INSERT_ID() ;
但它給我0作爲每次輸出。 請幫我。
只LAST_INSERT_ID()
其他返回MySQL服務器爲AUTO_INCREMENT
列自動生成的值;當您插入一個特定的值時,不會自動生成,LAST_INSERT_ID()
將不會返回任何值。
你可以賦值給LAST_INSERT_ID
自己:
INSERT INTO table (uuid) VALUES (LAST_INSERT_ID(12345));
LAST_INSERT_ID(value)
分配value
通過後續調用返回到LAST_INSERT_ID()
,並返回相同的值。不幸的是,這隻適用於整數值,對於UUID不會有用。
要指定自動增量的UUID,這是你做錯了
自動增量領域究竟會被自動插入
比你會得到0,因此LAST_INSERT_ID()
爲什麼要選擇不是通過插入自動生成,而是傳遞給它的東西?原因是你在插入語句中使用UUID()。我建議你首先選擇UUID,然後將它傳遞給插入
SELECT @id := UUID();
INSERT INTO tablename(id, value) VALUES(@id, somevalue)
首先,你必須使用一個自動遞增行。
如果你正在使用PHP,然後用這個方法:
$foo = mysql_insert_id();
採取在C#看看http://php.net/manual/en/function.mysql-insert-id.php
我用這樣的:
connection.Open();
cmd = new MySql.Data.MySqlClient.MySqlCommand();
cmd.Connection = connection;
cmd.CommandText = "INSERT INTO o_test(game_id, user_id, date) values(?game_id, ?uid, ?date)";
cmd.Prepare();
cmd.Parameters.AddWithValue("?game_id", null);
cmd.Parameters.AddWithValue("?uid", words[1]);
cmd.Parameters.AddWithValue("?date", words[2]);
cmd.ExecuteNonQuery();
int game_id;
cmd.Parameters.Add(new MySqlParameter("newId", cmd.LastInsertedId));
game_id = Convert.ToInt32(cmd.Parameters["@newId"].Value);
如果你想選擇所有列從最後插入的ID開始,你可以這樣:
SELECT * FROM table WHERE id = (SELECT MAX(id) FROM table)
你是否在與'INSERT'相同的連接/會話上執行'SELECT'? – eggyal
是使用相同的連接 –
此外,你有一個自動增量(http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html)列上的id ?您確定該行實際上已插入(並且插入沒有失敗並出現錯誤?) – dash