Penambahan otomatis di phpmyadmin


96

Saya memiliki database yang sudah ada menggunakan PHP, MySQL dan phpMyAdmin.

Saat pengguna menjadi anggota di situs web saya, saya memerlukan sistem untuk membuat nomor keanggotaan unik untuk mereka menggunakan nomor lima digit. untuk misalnya 83773. Saya rasa ini seperti membuat kata sandi acak kecuali saya hanya menginginkan nomor untuk anggota saya. Nomor ID ini harus unik untuk setiap anggota.

Apakah mungkin bagi saya untuk menetapkan kunci utama ke auto_increment di tabel pengguna saya dan mengaturnya untuk mulai dari 10000 dan kemudian kenaikan otomatis setiap kali anggota mendaftar?

Juga, apakah ada jumlah maksimum nomor ID kunci utama akan naik?

Apakah ini cara yang andal dan aman untuk menggunakan nomor ID kunci utama sebagai nomor keanggotaan?


3
Beberapa orang di bawah menjawab bahwa tidak ada batas atas untuk kunci utama, tetapi saya akan berasumsi bahwa batas atas adalah ukuran maksimum dari tipe data yang Anda pilih ... mungkin saya salah, tetapi tidak akan menjadi terbatas pada nilai maks 4294967295 lalu? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

Silakan ambil jawaban yang diterima. Saya pikir ini satu stackoverflow.com/a/18942684/248616
Nam G VU

Jawaban:


202

Ada beberapa langkah yang mungkin untuk mengaktifkan penambahan otomatis untuk kolom. Saya kira versi phpMyAdmin 3.5.5 tetapi tidak yakin.

Klik pada Tab Table > Structure > Under Action Klik Primary (set as primary), klik Change pada jendela pop-up, gulir ke kiri dan centang A_I . Pastikan juga Anda telah memilih Tidak Ada untuk Defaultmasukkan deskripsi gambar di sini


5
Karena fitur auto-inc telah dihapus dari tab Operations, tampaknya inilah cara menerapkannya sekarang. Terima kasih, @AmitKB.
Mike S.

2
Namun ketika saya mencobanya, saya mendapat kesalahan ini: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

Pesannya jelas, Anda mungkin mencoba memiliki lebih dari satu kolom otomatis.
Amit Bhagat

1
Punya masalah serupa dan ini memperbaiki masalah saya
Callat

1
wow, sangat sederhana. mengapa tidak ada yang menyebutkan ini? butuh waktu lama untuk menemukan jawaban seperti ini. sejauh ini jawaban terbaik.
oldboy

53

Di phpMyAdmin, buka tabel yang dimaksud dan klik tab "Operations". Di sebelah kiri di bawah Opsi Tabel Anda akan diizinkan untuk mengatur nilai AUTO_INCREMENT saat ini.


5
ketika saya melakukan ini, hanya dua pilihan saya tentang menambahkan auto_increment adalah "pindahkan tabel ke" atau "salin tabel ke". saya tidak ingin memindahkan atau menyalin tabel, tetapi cukup menambahkan auto_increment. apa yang sedang terjadi?? Saya menggunakan MySQL v5.6.
oldboy

@oldboy saya mendapatkan yang sama seperti Anda. Mungkin mereka menghapus fitur ini di versi XAMPP PhpMyAdmin yang lebih baru
kevind

21

Cukup jalankan kueri MySQL sederhana dan setel nomor kenaikan otomatis ke apa pun yang Anda inginkan.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

Dalam hal maksimum, sejauh yang saya tahu tidak ada, juga tidak ada cara untuk membatasi jumlah tersebut.

Ini sangat aman, dan praktik umum untuk menetapkan nomor id sebagai kunci utama, int auto incrementing. Ada alternatif seperti menggunakan PHP untuk menghasilkan nomor keanggotaan untuk Anda dalam format tertentu dan kemudian memeriksa nomor tersebut tidak ada sebelum memasukkan, namun bagi saya pribadi saya akan menggunakan nilai auto_inc id primer.


10
  1. Di tab "Struktur" pada tabel Anda
  2. Klik di pensil variabel yang Anda inginkan auto_increment
  3. di bawah tab "Extra" pilih "auto_increment"
  4. lalu buka tab "Operasi" di tabel Anda
  5. Di bawah "Opsi tabel" -> tipe auto_increment -> 10000

2

Di phpMyAdmin, jika Anda menyiapkan bidang di tabel Anda ke penambahan otomatis, lalu menyisipkan baris dan menetapkan nilai bidang itu ke 10000, itu akan berlanjut dari sana.


2

@AmitKB, Prosedur Anda benar. Meskipun kesalahan ini

Galat kueri: # 1075 - Definisi tabel salah; hanya boleh ada satu kolom otomatis dan harus ditentukan sebagai kunci

dapat diselesaikan dengan terlebih dahulu menandai bidang sebagai kunci (menggunakan ikon kunci dengan label utama), kecuali jika Anda memiliki kunci lain maka itu mungkin tidak berfungsi.


Sudah lama sekali sejak saya bermain dengan phpMyAdmin saya lupa bagaimana melakukan ini. Terima kasih atas perbaikan untuk masalah kedua ini. Itu berhasil untuk saya.
rncrtr

0

Anda tidak dapat menetapkan nilai maksimum (selain memilih tipe data yang tidak dapat menampung angka besar, tetapi tidak ada yang memiliki batas yang Anda minta). Anda dapat memeriksanya dengan LAST_INSERT_ID () setelah memasukkan untuk mendapatkan id dari anggota yang baru dibuat, dan jika terlalu besar menanganinya dalam kode aplikasi Anda (misalnya, hapus dan tolak anggota).

Mengapa Anda menginginkan batas atas?


0

Hal ini karena wp_terms, wp_termmetadan wp_term_taxonomymeja, yang memiliki semua ID mereka tidak diatur keAUTO_INCREMENT

Untuk melakukan ini, pergi ke phpmyadmin, klik pada database perhatian, wp_termstabel, klik pada Tab struktur, di sisi kanan Anda akan melihat tab bernama A_I(AUTO_INCREMENT), periksa dan simpan (Anda hanya melakukan ini untuk opsi pertama, jika wp_termAnda hanya melakukannya untuk term_id).

Lakukan hal yang sama untuk wp_termmetadan wp_term_taxonomyitu akan memperbaiki masalah.


Sepertinya Anda mengira OP menggunakan WordPress, dari mana Anda menemukan informasi itu? Saya tidak dapat menemukan referensi apa pun ke WP dalam pertanyaan tersebut.
Raul Sauco

0

(a) Cukup klik pada database Anda, pilih tabel Anda. Klik 'Operasi'. Di bawah bagian 'opsi tabel', ubah nilai AUTO_INCREMENT ke nilai yang Anda inginkan, dalam hal ini: 10000 klik 'Go'. (Lihat gambar terlampir)

(b) Alternatifnya, Anda dapat menjalankan perintah SQL di bawah tab SQL setelah memilih tabel Anda. Cukup ketik 'ALTER TABLE table_name AUTO_INCREMENT = 10000;' lalu klik 'Go'. Itu dia!! SETTING AUTO INCREMENT VALUE gambar (a)

SETTING AUTO INCREMENT VALUE gambar (B)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.