Saya mencoba mengubah tabel yang tidak memiliki kunci primer atau kolom auto_increment. Saya tahu cara menambahkan kolom kunci utama tetapi saya bertanya-tanya apakah mungkin untuk memasukkan data ke dalam kolom kunci utama secara otomatis (saya sudah memiliki 500 baris dalam DB dan ingin memberi mereka id tetapi saya tidak ingin melakukannya secara manual) . Adakah pikiran? Terima kasih banyak.
mysql
primary-key
Kucing Terbang
sumber
sumber
alter table
untuk menambahkan kunci, tetapi MySQL tidak akan menghasilkan ID untuk bidang yang belum memilikinya. Anda harus secara manual memperbarui bidang yang ada dan kemudian memastikan auto_increment baru Anda mulai dari offset yang tepat - standarnya adalah '1' dan Anda hanya akan berakhir dengan kesalahan kunci duplikat.Jawaban:
Sebuah
ALTER TABLE
pernyataan menambahkanPRIMARY KEY
kolom bekerja dengan benar dalam pengujian saya:Pada tabel sementara yang dibuat untuk tujuan pengujian, pernyataan di atas membuat
AUTO_INCREMENT
id
kolom dan memasukkan nilai kenaikan otomatis untuk setiap baris yang ada di tabel, dimulai dengan 1.sumber
FIRST
mis.ALTER TABLE tbl1 ADD id INT PRIMARY KEY AUTO_INCREMENT FIRST;
LAST_INSERT_ID()
nilai ituSELECT * FROM table_name WHERE id = LAST_INSERT_ID()
dan sebagian besar API bahasa pemrograman menawarkan beberapa fungsi / metode untuk mengembalikan nilai itu dalam kode aplikasi.misalkan Anda tidak memiliki kolom untuk kenaikan otomatis seperti id, tidak, maka Anda dapat menambahkan menggunakan kueri berikut:
Jika Anda memiliki kolom, maka ubah ke kenaikan otomatis menggunakan kueri berikut:
sumber
FIRST
pada akhirnya?id
kolom baru menjadi yang pertama dalam tabel dibandingkan dengan yang terakhir, yang merupakan perilaku default.ya, sesuatu seperti ini akan melakukannya, mungkin bukan yang terbaik, Anda mungkin ingin membuat cadangan
perhatikan bahwa yang
any_field
Anda pilih harus sama ketika memperbarui.sumber
Bagi yang seperti saya mengalami
Multiple primary key defined
kesalahan coba:Pada MySQL v5.5.31 ini mengatur
id
kolom sebagai kunci utama untuk saya dan mengisi setiap baris dengan nilai yang bertambah.sumber
Yang paling mudah dan tercepat yang saya temukan adalah ini
sumber
Saya mampu beradaptasi petunjuk ini mengambil meja dengan yang ada primary key non-increment, dan menambahkan kunci utama incrementing ke meja dan membuat kunci primer komposit baru dengan kedua tombol lama dan baru sebagai kunci utama komposit menggunakan berikut kode:
Saat ini selesai, bidang _USER_ID ada dan memiliki semua nilai angka untuk kunci utama persis seperti yang Anda harapkan. Dengan "DROP TABLE" di bagian atas, Anda dapat menjalankan ini berulang-ulang untuk bereksperimen dengan variasi.
Apa yang saya belum dapat bekerja adalah situasi di mana ada KUNCI ASING masuk yang sudah menunjuk pada bidang USER_ID. Saya mendapatkan pesan ini ketika saya mencoba melakukan contoh yang lebih kompleks dengan kunci asing yang masuk dari tabel lain.
Saya menduga bahwa saya perlu menghancurkan semua kunci asing sebelum melakukan tabel ALTER dan kemudian membangunnya kembali setelah itu. Tetapi untuk sekarang saya ingin membagikan solusi ini ke versi yang lebih menantang dari pertanyaan awal jika orang lain menghadapi situasi ini.
sumber
Ekspor tabel Anda, lalu kosongkan tabel Anda, lalu tambahkan bidang sebagai INT unik, lalu ubah ke AUTO_INCREMENT, lalu impor tabel Anda lagi yang telah Anda ekspor sebelumnya.
sumber
Anda bisa menambahkan kolom Kunci Utama baru ke tabel yang ada, yang dapat memiliki nomor urut, menggunakan perintah:
sumber
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTITY' at line 1
Saya menghadapi masalah yang sama sehingga apa yang saya lakukan, saya menjatuhkan bidang untuk kunci utama kemudian saya membuatnya kembali dan memastikan bahwa itu adalah tambahan otomatis. Itu berhasil bagi saya. Saya harap ini membantu orang lain
sumber
ALTER TABLE tableName MODIFY tableNameID MEDIUMINT NOT NULL AUTO_INCREMENT ;
Di sini tableName adalah nama tabel Anda,
tableName adalah nama kolom Anda yang harus diubah primer
MEDIUMINT adalah tipe data dari kunci utama yang ada
AUTO_INCREMENT Anda harus menambahkan hanya auto_increment setelah bukan nol
Itu akan membuat auto_increment kunci primer ......
Semoga ini bisa membantu :)
sumber
Bagaimana cara menulis PHP untuk MENGUBAH bidang yang sudah ada (nama, dalam contoh ini) untuk menjadikannya kunci utama? W / o, tentu saja, menambahkan bidang 'id' tambahan ke tabel ..
Ini tabel yang saat ini dibuat - Jumlah Rekaman ditemukan: 4 nama VARCHAR (20) YA berkembang biak VARCHAR (30) YA warna VARCHAR (20) YA berat SMALLINT (7) YA
Ini hasil akhir yang dicari (DESKRIPSI TABEL) -
Jumlah catatan yang ditemukan: 4 nama VARCHAR (20) NO PRI breed VARCHAR (30) YES color VARCHAR (20) YES weight SMALLINT (7) YES
Alih-alih mendapatkan ini -
Jumlah Rekaman yang ditemukan: 5 id int (11) NO PRI name VARCHAR (20) YES breed VARCHAR (30) YES color VARCHAR (20) YES weight SMALLINT (7) YES
setelah mencoba ..
$ query = "ALTER TABLE rachorses ADD id INT NOT NOT NULL AUTO_INCREMENT PERTAMA, TAMBAHKAN KUNCI UTAMA (id)";
bagaimana cara mendapatkan ini? -
Jumlah catatan yang ditemukan: 4 nama VARCHAR (20) NO PRI breed VARCHAR (30) YES color VARCHAR (20) YES weight SMALLINT (7) YES
yaitu INSERT / ADD .. dll. kunci utama KE catatan lapangan pertama (tanpa menambahkan bidang 'id' tambahan, seperti yang dinyatakan sebelumnya.
sumber