Perihalan status
Saya mempunyai dua pangkalan data, DB1
和 DB2
,它们具有相同的表 Author
,其中字段为 Author.ID
和 Author.AuthorName
.
Author.ID
DB1.Author
的 Author.ID
字段有 AUTO_INCRMENT,而 DB2.Author
没有 AUTO_INCRMENT,因为它依赖于 DB1
mempunyai
DB2.Author
tidak mempunyai Author.ID
上的 PRIMARY 索引和 Author.AuthorName
AUTO_INCRMENT kerana ia bergantung pada
Kedua-dua jadual mempunyai indeks unik pada DB2.Author
具有从 DB1.Author
.
Menyalin baris.
Kedua-dua pangkalan data menggunakanversi 10.6.7.
SoalanDB1
管理员删除了 DB1.Author
ID | |
---|---|
1 | |
2 | |
3 |
AuthorName
为 'B'
ID | |
---|---|
1 | |
3 |
ID | |
---|---|
1 | |
2 |
DB1.Author
复制到 DB2.Author
而不删除 DB2.Author
表中的所有内容,这样我就不会'不会丢失 CASCADE
Kini saya perlu mencari cara untuk menyalin status baris yang dikemas kini daripada DB1.Author
ke DB2.Author
DB2.Author
Semua dalam jadual CASCADE
. Apakah cara terbaik?
ID
2 会尝试插入 'C'
的重复值,因为它ID
Gambar saya
Itulah yang saya lakukan, tetapi ia jelas tidak berfungsi kerana sekiranya kunci pendua ia cuba mencipta kunci pendua lain (pendua sudah wujud pada 3):
INSERT INTO DB2.Author (ID, AuthorName) SELECT DB1.Author.ID, DB1.Author.AuthorName FROM DB1.Author ON DUPLICATE KEY UPDATE ID = DB1.Author.ID, AuthorName = DB1.Author.AuthorName;Kaedah lain? 🎜🎜 🎜Selain penyelesaian pertanyaan SQL yang mungkin, adakah terdapat cara lain untuk mengemas kini data jadual secara automatik dalam satu pangkalan data apabila data ditukar dalam pangkalan data lain? Hanya beberapa jadual perlu disalin, bukan jadual terpaut lain. 🎜
TL;DR, masalah anda ialah pengurus pangkalan data anda. Penyelesaiannya adalah untuk dia membuat asal kerosakan yang dilakukan dengan memulihkan data kepada keadaan sebelumnya. Padamkan sahaja baris itu. Mengemas kini kunci utama tidak pernah berfungsi.
Jangan usahakan kesilapannya untuk mencipta penyelesaian atau mengesahkannya, kerana berbuat demikian akan menjadikannya lebih berkemungkinan berlaku lagi.
Jawapan penuh.
Masalah sebenar anda ialah "pentadbir pangkalan data" anda yang melanggar peraturan asas pangkalan data: Jangan sekali-kali mengemas kini nilai kunci pengganti!
Dalam kes anda, keadaan lebih tragis kerana jurang dalam nilai lajur ID tidak penting. Jika jurang itu penting, anda lebih teruk. Mohon izin untuk menjelaskan...
Nama pengarang ialah pengecam sebenar anda. Kami tahu ini kerana ia mempunyai kekangan yang unik.
LajurID ialah kunci pengganti, paling mudah dilaksanakan sebagai integer kenaikan automatik, tetapi kunci pengganti juga akan berfungsi dengan baik jika kunci pengganti ialah nombor rawak (unik). Jurang, atau pilihan nilai itu sendiri, tidak ada kaitan dengan kesahihan kunci pengganti.