Mendapatkan Setara dengan SEQUENCE.NEXTVAL Oracle dalam MySQL
Dalam Oracle, fungsi SEQUENCE.NEXTVAL menyediakan urutan nombor yang unik dan boleh diramal tanpa memerlukan sisipan ke dalam jadual. Ini ialah ciri yang berguna apabila anda perlu menjana ID unik atau nilai jujukan lain.
MySQL tidak menawarkan persamaan yang tepat dengan SEQUENCE.NEXTVAL, tetapi terdapat beberapa penyelesaian untuk mencapai kefungsian yang serupa. Satu pendekatan ialah menggunakan atribut lajur AUTO_INCREMENT.
Menggunakan Atribut Lajur AUTO_INCREMENT
Atribut AUTO_INCREMENT secara automatik menambah nilai untuk setiap baris baharu yang dimasukkan ke dalam jadual. Anda boleh mengkonfigurasi nilai permulaan dan amaun kenaikan menggunakan pilihan AUTO_INCREMENT dalam definisi jadual.
Sebagai contoh, definisi jadual berikut mencipta jadual haiwan dengan lajur id yang akan meningkat secara automatik untuk setiap baris baharu:
CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) );
Mendapatkan semula AUTO_INCREMENT Semasa Nilai
Untuk mendapatkan semula nilai semasa lajur AUTO_INCREMENT, anda boleh menggunakan pertanyaan berikut:
SELECT Auto_increment FROM information_schema.tables WHERE table_name='animals';
Pertanyaan ini akan mengembalikan nilai seterusnya dalam jujukan yang akan digunakan untuk baris seterusnya dimasukkan ke dalam jadual haiwan.
Nota: Pertanyaan ini hanya mendapatkan semula nilai semasa. Ia tidak menambah nilai atau membuat sebarang perubahan pada jadual.
Menaikkan Nilai AUTO_INCREMENT
Tidak seperti SEQUENCE.NEXTVAL Oracle, lajur AUTO_INCREMENT MySQL tidak meningkat secara automatik nilai sehingga operasi sisipan dilakukan. Walau bagaimanapun, anda boleh menambah nilai secara manual menggunakan sintaks tertentu:
INSERT INTO animals (name) VALUES ('increment');
Pertanyaan ini akan memasukkan baris baharu dengan nama 'kenaikan' ke dalam jadual haiwan. Walau bagaimanapun, tujuan utama pertanyaan ini adalah untuk menambah nilai lajur AUTO_INCREMENT, bukan untuk benar-benar memasukkan baris.
Dengan melaksanakan pertanyaan ini, anda boleh menambah nilai AUTO_INCREMENT walaupun tanpa memasukkan sebarang data ke dalam jadual.
Menggunakan Spring JDBCTemplate
Jika anda menggunakan Spring JDBCTemplate, anda boleh menambah nilai AUTO_INCREMENT menggunakan kod berikut:
jdbcTemplate.update("INSERT INTO animals (name) VALUES ('increment')");
Kod ini akan menambah nilai AUTO_INCREMENT tanpa memasukkan sebarang data ke dalam meja.
Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Fungsi SEQUENCE.NEXTVAL Oracle dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!