MySQL Oracle の SEQUENCE.NEXTVAL と同等
Oracle は、テーブル列の一意で連続した値を生成する SEQUENCE.NEXTVAL 関数を提供します。ただし、MySQL には、この機能に直接相当する機能がありません。
MySQL の自動インクリメントについて
MySQL は、テーブル列に AUTO_INCREMENT 属性を使用して一意の値を提供します。ただし、通常、新しい行がテーブルに挿入されない限り、これらの値は増加しません。
最後の自動インクリメント値の取得
最後に生成された自動インクリメント値を取得するには、インクリメント値。MySQL は LAST_INSERT_ID() 関数を提供します。ただし、この関数は、次のシーケンス値ではなく、最新の挿入操作の値のみを返します。
Oracle の SEQUENCE.NEXTVAL 動作の複製
同様の動作を実現するにはMySQL の SEQUENCE.NEXTVAL に追加すると、目的のクエリをシミュレートするカスタム クエリを作成できます。機能:
SELECT COALESCE( MAX(id) + 1, ( SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'animals' ) ) FROM animals;
このクエリでは、MAX(id) 1 式は次の潜在的なシーケンス値を計算しますが、COALESCE 関数はテーブルが空の場合、自動インクリメント シーケンスが 1 から始まることを保証します ( CREATE TABLE ステートメントで指定されているとおりです)。このクエリは、Oracle の SEQUENCE.NEXTVAL 動作を効果的にシミュレートする値を提供し、テーブルの挿入を必要とせずに一意の増分値を生成します。
以上がMySQL で Oracle の SEQUENCE.NEXTVAL をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。