Saya memiliki skema tabel berikut yang memetakan user_customers untuk izin pada database MySQL langsung:
mysql> describe user_customer_permission;
+------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_customer_id | int(11) | NO | PRI | NULL | |
| permission_id | int(11) | NO | PRI | NULL | |
+------------------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
Saya ingin menghapus kunci utama untuk user_customer_id dan permit_id dan mempertahankan kunci utama untuk id.
Ketika saya menjalankan perintah:
alter table user_customer_permission drop primary key;
Saya mendapatkan kesalahan berikut:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
Bagaimana saya bisa menjatuhkan kunci utama kolom?
@markb
: jika Anda mengembalikan kunci utama, Anda yakin dapat mengembalikannya keAUTO_INCREMENT
.AUTO_INCREMENT
mekanisme dengan tabel InnoDB,AUTO_INCREMENT
kolomai_col
harus didefinisikan sebagai bagian dari indeks sehingga memungkinkan untuk melakukan setara denganSELECT MAX(ai_col)
pencarian yang diindeks. di atas meja untuk mendapatkan nilai kolom maksimum. Biasanya, ini dicapai dengan membuat kolom kolom pertama dari beberapa indeks tabel.Satu baris:
Anda juga tidak akan kehilangan peningkatan otomatis dan harus menambahkannya kembali yang dapat memiliki efek samping.
sumber
Saya yakin Quassnoi telah menjawab pertanyaan langsung Anda. Hanya catatan tambahan: Mungkin ini hanya kata-kata canggung di pihak Anda, tetapi Anda tampaknya mendapat kesan bahwa Anda memiliki tiga kunci utama, satu di setiap bidang. Ini bukan kasusnya. Menurut definisi, Anda hanya dapat memiliki satu kunci utama. Apa yang Anda miliki di sini adalah kunci utama yang merupakan gabungan dari tiga bidang. Dengan demikian, Anda tidak dapat "menjatuhkan kunci utama pada kolom". Anda dapat menjatuhkan kunci utama, atau tidak menjatuhkan kunci utama. Jika Anda menginginkan kunci utama yang hanya mencakup satu kolom, Anda dapat menjatuhkan kunci primer yang ada di 3 kolom dan membuat kunci primer baru pada 1 kolom.
sumber
sumber
Jika Anda memiliki kunci primer komposit, lakukan seperti ini-
ALTER TABLE table_name DROP PRIMARY KEY,ADD PRIMARY KEY (col_name1, col_name2);
sumber
"jika Anda mengembalikan kunci utama, Anda pasti dapat mengembalikannya kembali ke AUTO_INCREMENT"
Seharusnya tidak ada pertanyaan apakah diinginkan untuk "mengembalikan properti PK" dan "mengembalikan properti autoincrement" pada kolom ID.
Mengingat bahwa itu adalah peningkatan otomatis dalam definisi tabel sebelumnya, sangat mungkin bahwa ada beberapa program yang memasukkan ke dalam tabel ini tanpa memberikan nilai ID (karena kolom ID bagaimanapun juga adalah peningkatan otomatis).
Setiap operasi program semacam itu akan rusak dengan tidak mengembalikan properti autoincrement.
sumber
Pertama-tama, modifikasi kolom untuk menghapus bidang auto_increment seperti ini: ubah tabel user_customer_permission ubah kolom id int;
Selanjutnya, lepaskan kunci utama. ubah tabel user_customer_permission drop primary key;
sumber
sumber
Saya memiliki masalah yang sama dan di samping beberapa nilai di dalam meja saya. Meskipun saya mengubah Kunci Utama saya dengan
ALTER TABLE
DROP PRIMARY KEY , ADD PRIMARY KEY (
id user_customer_permission)
masalah berlanjut di server saya. Saya membuat bidang baru di dalam tabel. Saya mentransfer nilai ke bidang baru dan menghapus yang lama, masalah terpecahkan !!
sumber
Untuk menambahkan kunci utama di kolom.
Untuk menghapus kunci utama dari tabel.
sumber
Pertama-tama buat cadangan database. Lalu jatuhkan kunci asing apa pun yang terkait dengan tabel. memotong tabel kunci asing. Memotong tabel saat ini. Hapus kunci utama yang diperlukan. Gunakan sqlyog atau workbench atau heidisql atau dbeaver atau phpmyadmin.
sumber
Temukan tabel di SQL manager klik kanan dan pilih desain, lalu klik kanan ikon kunci kecil dan pilih hapus kunci utama.
sumber