0

OK、質問はIDを返す方法ではなく、スキップする方法に似ています... last_insert_id()を使用して最後に挿入された行のIDを取得する状況がありますが、ゼロを取得したい場合は行は挿入されません。問題は次のとおりです。

  • 挿入...いくつかのレコードを更新:行が新しく挿入されたため、すべてのIDが返されます
  • 次に、プロセスを繰り返します。今回はIDは返されません。わーい!それはまさに私が欲しいものです
  • 1つの列の値を変更して、プロセスを繰り返します。しかし、列の値を変更した行のIDが返されます。これにより、非常に腹を立てています。何も挿入されていない場合、mysqlがIDを返さないようにします

要約すると:

  • 新しいレコードを挿入する場合:IDが返されます
  • 同一のレコードを挿入する場合:IDは返されません
  • 値を更新する場合:更新された行の更新されたIDが返されます:(

これに対する回避策はありますか?

mysqlはおそらく同一のレコードに対して更新を実行しないため、これが発生することはわかっていますが、それでも...これを回避する方法を知りたいと思います。

4

1 に答える 1

0

挿入された行数を取得し、それを使用して何かが挿入されたかどうかを判断できるはずです。「生の」クエリを使用している場合 (つまり、挿入された行数を提供する可能性のある API がない場合)、ROW_COUNT() が必要なものを提供するように見えます。

于 2012-11-28T13:06:19.257 に答える