Saya memiliki tabel user_interactions
dengan 4 kolom:
user_1
user_2
type
timestamp
Kunci utama adalah (user_1,user_2,type)
dan saya ingin mengubah ke(user_2,user_1,type)
Jadi yang saya lakukan adalah:
drop primary key ...
add primary key (user_2,user_1,type)...
dan voila ...
Masalahnya adalah database itu hidup di server.
Jadi sebelum saya dapat memperbarui kunci utama, banyak duplikat sudah masuk, dan mereka terus menyusup.
Apa yang harus dilakukan?
Yang ingin saya lakukan sekarang adalah menghapus duplikat dan menyimpan yang terbaru timestamp
(yaitu kolom di tabel).
Dan kemudian perbarui kunci utama lagi.
mysql
primary-key
simplfuzz
sumber
sumber
Jawaban:
Lain kali, gunakan satu pernyataan "alter table" untuk memperbarui kunci utama.
Untuk memperbaiki berbagai hal:
Kunci harus menghentikan pembaruan lebih lanjut yang masuk saat Anda melakukan ini. Berapa lama ini tergantung pada ukuran meja Anda.
Masalah utamanya adalah jika Anda memiliki beberapa duplikat dengan stempel waktu yang sama.
sumber
Jika kunci utama kebetulan adalah nilai auto_increment, Anda harus menghapus kenaikan otomatis, lalu jatuhkan kunci utama lalu tambahkan kembali kenaikan otomatis
lalu tambahkan kembali kenaikan otomatis
lalu setel kenaikan otomatis kembali ke nilai sebelumnya
sumber
Anda juga dapat menggunakan
IGNORE
kata kunci, contoh:sumber