MySQL で Oracle の SEQUENCE.NEXTVAL に相当するものを取得する
Oracle では、SEQUENCE.NEXTVAL 関数は、一意で予測可能な数値シーケンスを提供します。テーブルへの挿入は必要ありません。これは、一意の ID やその他の連続した値を生成する必要がある場合に便利な機能です。
MySQL には SEQUENCE.NEXTVAL とまったく同等のものはありませんが、同様の機能を実現するための回避策がいくつかあります。 1 つの方法は、AUTO_INCREMENT 列属性を使用することです。
AUTO_INCREMENT 列属性の使用
AUTO_INCREMENT 属性は、テーブルに挿入される新しい行ごとに値を自動的に増加させます。テーブル定義の AUTO_INCREMENT オプションを使用して、開始値と増分量を構成できます。
たとえば、次のテーブル定義では、新しい行ごとに自動インクリメントされる id 列を持つ動物テーブルを作成します。
CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) );
現在の AUTO_INCREMENT の取得Value
AUTO_INCREMENT 列の現在の値を取得するには、次のクエリを使用できます。
SELECT Auto_increment FROM information_schema.tables WHERE table_name='animals';
このクエリは、使用されるシーケンス内の次の値を返します。動物テーブルに挿入された次の行。
注: このクエリは現在の行のみを取得します。 価値。値が増加したり、テーブルに変更が加えられることはありません。
AUTO_INCREMENT 値の増加
Oracle の SEQUENCE.NEXTVAL とは異なり、MySQL の AUTO_INCREMENT カラムは自動的に増加しません。挿入操作が実行されるまでの値。ただし、特定の構文を使用して値を手動で増やすことができます:
INSERT INTO animals (name) VALUES ('increment');
このクエリは、「increment」という名前の新しい行を動物テーブルに挿入します。ただし、このクエリの主な目的は、実際に行を挿入することではなく、AUTO_INCREMENT 列の値をインクリメントすることです。
このクエリを実行すると、テーブルにデータを挿入しなくても、AUTO_INCREMENT 値をインクリメントできます。
Spring JDBCTemplate を使用する
Spring JDBCTemplate を使用すると、次のコードを使用して AUTO_INCREMENT 値をインクリメントできます:
jdbcTemplate.update("INSERT INTO animals (name) VALUES ('increment')");
このコードは、テーブルにデータを挿入せずに AUTO_INCREMENT 値をインクリメントします。
以上がMySQL で Oracle の SEQUENCE.NEXTVAL 機能をシミュレートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。