Bagaimana bisa saya mengatur ulang tersebutAUTO_INCREMENT
dari lapangan?
Saya ingin mulai menghitung dari1
lagi.
mysql
sql
auto-increment
Home run
sumber
sumber
TRUNCATE TABLE yourTableName;
Jawaban:
Anda dapat mengatur ulang penghitung dengan:
Untuk InnoDB Anda tidak dapat menetapkan
auto_increment
nilai lebih rendah atau sama dengan indeks saat ini tertinggi. (kutipan dari ViralPatel ):Lihat Cara Mengatur Ulang MySQL AutoIncrement menggunakan nilai MAX dari tabel lain? tentang bagaimana secara dinamis mendapatkan nilai yang dapat diterima.
sumber
circular reference
curcular reference
?sumber
Saya pikir ini akan melakukannya
sumber
UPDATE
akan memperbarui semua nilai dalamid
kolom.Cukup seperti ini:
referensi: http://dev.mysql.com/doc/refman/5.1/id/alter-table.html
sumber
reset
berarti mengaturnya ke nilai default ... sehingga Anda dapat mengganti "value" dengan 1Ada cara yang sangat mudah dengan phpmyadmin di bawah tab "operasi", Anda dapat mengatur, dalam opsi tabel, peningkatan otomatis ke nomor yang Anda inginkan.
sumber
Solusi terbaik yang bekerja untuk saya:
Cepat, bekerja dengan innoDB, dan saya tidak perlu tahu nilai maksimum saat ini! Dengan cara ini penghitung kenaikan otomatis akan mengatur ulang dan itu akan mulai secara otomatis dari nilai maksimum yang ada.
sumber
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
5.6.15
, sedangkanALTER TABLE tablename AUTO_INCREMENT = 1
tidak tidak .Jawaban dengan nilai tertinggi untuk pertanyaan ini semuanya merekomendasikan "ALTER yourtable AUTO_INCREMENT = value". Namun, ini hanya berfungsi ketika
value
di alter lebih besar dari nilai maks saat ini dari kolom peningkatan otomatis. Menurut dokumentasi MySQL 8 :Intinya, Anda hanya dapat mengubah AUTO_INCREMENT untuk meningkatkan nilai kolom peningkatan otomatis, bukan mengatur ulangnya menjadi 1, karena OP bertanya di bagian kedua pertanyaan. Untuk opsi yang benar-benar memungkinkan Anda mengatur AUTO_INCREMENT ke bawah dari maksnya saat ini, lihat Menyusun Ulang / reset kunci primer kenaikan otomatis .
sumber
Menambahkan pembaruan karena fungsi berubah di MySQL 5.6. Pada MySQL 5.6 Anda BISA menggunakan ALTER TABLE sederhana dengan InnoDB:
Dokumen diperbarui untuk mencerminkan ini:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
Pengujian saya juga menunjukkan bahwa tabel TIDAK disalin, nilainya hanya diubah.
sumber
Ada opsi bagus yang diberikan di Cara Mengatur Ulang Kolom MySQL Autoincrement
Perhatikan bahwa
ALTER TABLE tablename AUTO_INCREMENT = value;
tidak tidak bekerja untuk InnoDBsumber
DELETE
(atauROLLBACK
) tidak akan memulihkan id. Satu pengecualian: Setelah restart (atau crash), id berikutnya dihitungMAX(id)+1
, dengan demikian secara efektif memulihkan id yang dihapus pada akhirnya . Pengecualian untuk pengecualian: MySQL 8.0 membuat id tersebut tidak digunakan.Saya menggunakan ini di beberapa skrip saya, bidang id turun dan kemudian ditambahkan kembali dengan pengaturan sebelumnya, semua bidang yang ada dalam tabel database diisi dengan nilai kenaikan otomatis baru, ini juga harus bekerja dengan InnoDB.
Perhatikan bahwa semua bidang dalam tabel akan dihitung ulang dan akan memiliki id lainnya !!!.
sumber
Anda juga dapat menggunakan
TRUNCATE
tabel sintaks seperti ini:TRUNCATE TABLE table_name
WASPADALAH !!
TRUNCATE TABLE your_table
akan menghapus semua yang ada diyour_table
!!sumber
TRUNCATE
ini juga akan menghapus SEMUA baris Anda di tabel yang ditentukan!TRUNCATE
akan mengatur ulangauto_increment
bidang juga? Kasus penggunaan saya adalah untuk menghapus data lama dalam tabel dan mulai ID dari 1 lagi untuk data baru (bayangkan, membersihkan tabel untuk penggunaan yang benar setelah pengujian selesai). Saya pikir saya harus keDROP
seluruh meja danCREATE
lagi.auto_increment
, gunakanDELETE FROM
sebagai gantiTRUNCATE
.itu untuk tabel kosong:
jika Anda memiliki data tetapi Anda ingin merapikannya, saya sarankan gunakan ini:
sumber
Inilah solusi saya, tetapi saya tidak akan menyarankan untuk melakukan ini jika kolom Anda memiliki kendala atau terhubung sebagai kunci asing ke tabel lain karena akan memiliki efek buruk atau bahkan tidak akan berfungsi.
> Pertama: jatuhkan kolom
> Kedua: buat ulang kolom dan atur sebagai PERTAMA jika Anda menginginkannya sebagai kolom pertama yang saya asumsikan.
Ini bekerja dengan baik!
sumber
Pada MySQL 5.6 pendekatan di bawah ini bekerja lebih cepat karena DDL online (catatan
algorithm=inplace
):alter table tablename auto_increment=1, algorithm=inplace;
sumber
Anda cukup memotong tabel untuk mengatur ulang urutan
sumber
Saya mencoba mengubah tabel dan mengatur auto_increment ke 1 tetapi tidak berhasil. Saya memutuskan untuk menghapus nama kolom yang saya tambahkan, kemudian buat kolom baru dengan nama pilihan Anda dan atur kolom baru itu untuk ditambahkan dari awal.
sumber
Penghitung kenaikan otomatis untuk tabel dapat (diatur ulang) dengan dua cara:
Dengan menjalankan kueri, seperti yang sudah dijelaskan orang lain:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
Menggunakan Workbench atau alat desain database visual lainnya. Saya akan menunjukkan di Workbench bagaimana hal itu dilakukan - tetapi seharusnya tidak jauh berbeda dengan alat lain juga. Dengan mengklik kanan pada tabel yang diinginkan dan memilih
Alter table
dari menu konteks. Di bagian bawah Anda dapat melihat semua opsi yang tersedia untuk mengubah tabel. PilihOptions
dan Anda akan mendapatkan formulir ini:Kemudian cukup atur nilai yang diinginkan di bidang
Auto increment
seperti yang ditunjukkan pada gambar. Ini pada dasarnya akan mengeksekusi query yang ditunjukkan pada opsi pertama.sumber
Untuk memperbarui terbaru ditambah satu id
sumber
ALTER TABLE tablename AUTO_INCREMENT = 1
sumber
Saya mencari di Google dan menemukan pertanyaan ini, tetapi jawaban yang saya cari memenuhi dua kriteria:
Karena saya tidak dapat menemukan apa yang saya inginkan di sini, saya membuat jawaban dari berbagai jawaban dan membagikannya di sini.
Beberapa hal yang perlu diperhatikan:
id
dengan tipe sebagaiint
kunci utamaLangkah 1: Buat Prosedur Tersimpan
buat prosedur tersimpan seperti ini:
Kemudian jalankan.
Sebelum dijalankan, ini terlihat seperti ini ketika Anda melihat di bawah Prosedur Tersimpan di database Anda.
Ketika saya menjalankan, saya cukup memilih prosedur yang tersimpan dan tekan Run Selection
Catatan: bagian pembatas sangat penting. Karenanya, jika Anda menyalin dan menempel dari jawaban yang dipilih teratas dalam pertanyaan ini, mereka cenderung tidak bekerja karena alasan ini.
Setelah saya menjalankan, saya harus melihat prosedur yang tersimpan
Jika Anda perlu mengubah prosedur tersimpan, Anda harus menghapus prosedur tersimpan, lalu pilih untuk menjalankan lagi.
Langkah 2: Panggil prosedur yang tersimpan
Kali ini Anda cukup menggunakan kueri MySQL normal.
Awalnya dari catatan kueri SQL saya sendiri di https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc dan diadaptasi untuk StackOverflow
sumber
sumber
Coba Jalankan Pertanyaan Ini
Atau Coba Kueri Ini Untuk Setel Ulang Secara Otomatis
Dan Setel Peningkatan Otomatis Kemudian Jalankan Pertanyaan Ini
sumber
Saya sarankan Anda pergi ke Query Browser dan lakukan yang berikut:
Auto_increment akan diatur ulang menjadi satu setelah Anda memasukkan baris baru ke dalam tabel.
Saya tidak tahu apa yang akan terjadi jika Anda mencoba menambahkan baris di mana nilai bidang auto_increment sudah ada.
Semoga bantuan ini!
sumber
Cara terbaik adalah menghapus bidang dengan AI dan menambahkannya lagi dengan AI, berfungsi untuk semua tabel
sumber