Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengekalkan Integriti Baris Apabila Menyalin Data Antara Jadual dengan Pemeriksaan Pendua?
Memelihara Integriti Baris: Menyalin Data dengan Pemeriksaan Pendua
Apabila berhadapan dengan tugas mereplikasi data antara dua jadual dengan skema yang sama, memastikan data integriti menjadi keutamaan. Satu isu biasa timbul apabila cuba menyalin baris dari satu jadual ke jadual lain sambil mengabaikan pendua. Mari kita mendalami penyelesaian untuk menangani cabaran ini.
Pada mulanya, penyelesaian yang dicadangkan melibatkan penggunaan klausa WHERE dengan subkueri untuk menapis baris pendua:
INSERT INTO destTable SELECT * FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable)
Walau bagaimanapun, pendekatan ini gagal untuk menggabungkan kriteria yang mentakrifkan apa yang menjadi pendua. Untuk membetulkan isu ini, klausa WHERE tambahan diperlukan dalam subkueri, menyatakan kriteria yang sepadan:
WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1=destTable.Field1 and SrcTable.Field2=DestTable.Field2...etc.)
Sebagai alternatif, gabungan luar menawarkan penyelesaian yang lebih ringkas:
INSERT INTO destTable SELECT s.field1,s.field2,s.field3,... FROM srcTable s LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...) WHERE d.Key1 IS NULL
Ini pendekatan mengenal pasti dan memasukkan baris daripada jadual sumber yang tidak mempunyai baris yang sepadan dalam jadual destinasi berdasarkan gabungan yang ditentukan kekunci.
Selain itu, jika kebimbangan terletak pada baris pendua yang berpotensi dalam jadual sumber itu sendiri, pernyataan yang berbeza boleh digunakan:
INSERT INTO destTable SELECT Distinct field1,field2,field3,... FROM srcTable
Akhir sekali, disyorkan untuk menyenaraikan nama medan tertentu dalam sisipkan pernyataan daripada menggunakan SELECT *, memastikan bahawa hanya medan yang dimaksudkan disalin.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Integriti Baris Apabila Menyalin Data Antara Jadual dengan Pemeriksaan Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!