0

Mysqlでは、mysqlのテーブルにInsertコマンドを使用して行を挿入していますが、最後の行のIDを挿入する必要があります。

SELECT LAST_INSERT_ID() ;

しかし、毎回出力として0が返されます。これで私を助けてください。

4

5 に答える 5

4

LAST_INSERT_ID()AUTO_INCREMENT列に対してMySQLサーバーによって自動生成された値のみを返します。特定の値を挿入すると、自動生成は行われず、によって値が返されることはありませんLAST_INSERT_ID()

LAST_INSERT_ID自分に値を割り当てることができます。

INSERT INTO table (uuid) VALUES (LAST_INSERT_ID(12345));

LAST_INSERT_ID(value)valueへの後続の呼び出しによって返されるように割り当てLAST_INSERT_ID()、同じ値を返します。残念ながら、これは整数値に対してのみ機能し、UUIDでは役に立ちません。

于 2012-10-12T12:11:39.503 に答える
1

挿入によって自動生成されないが、それに渡されるものを選択したいのはなぜですか?その理由は、挿入ステートメントでUUID()を使用しているためです。最初にUUIDを選択してから、それを挿入に渡すことをお勧めします

SELECT @id := UUID();
INSERT INTO tablename(id, value) VALUES(@id, somevalue)
于 2012-10-12T12:11:50.537 に答える
0

自動インクリメントにuuidを割り当てていますが、これは間違っていることです

自動インクリメントフィールドが自動的に挿入されます

それ以外の場合、LAST_INSERT_ID()で0の結果が得られます

于 2012-10-12T12:09:57.713 に答える
0

まず、自動インクリメントされた1行を使用する必要があります。

phpを使用している場合は、次の方法を使用してください。

 $foo = mysql_insert_id();

http://php.net/manual/en/function.mysql-insert-id.phpをご覧ください

C#では次のように使用します:

                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);
于 2012-10-12T12:21:33.540 に答える
0

最後に挿入されたIDからすべての列を選択する場合は、次のように実行できます。

SELECT * FROM table WHERE id = (SELECT MAX(id) FROM table)
于 2014-02-10T17:23:02.613 に答える