Anda mengatakan bahwa kedua pelanggan menggunakan aplikasi Anda, jadi saya berasumsi bahwa itu semacam perangkat lunak "shrink-wrap" yang digunakan oleh lebih banyak pelanggan daripada hanya dua ini, benar?
Jika ya, menambahkan kolom khusus ke tabel atau semacamnya mungkin akan menimbulkan masalah di masa mendatang, karena Anda juga harus mempertahankan versi khusus untuk dua pelanggan ini yang dapat menangani kolom tambahan. Atau Anda harus memperkenalkan kolom ini ke basis kode utama Anda, yang berarti bahwa semua pelanggan Anda yang lain juga akan mendapatkannya.
Saya dapat memikirkan cara yang lebih mudah untuk melakukan ini tanpa mengubah tabel Anda atau menambahkan kolom apa pun.
Agar ini berfungsi, Anda perlu mencari ID terbesar yang ada di kedua database secara bersamaan ( tidak peduli di tabel mana atau di database mana itu) .
Ini mungkin memerlukan beberapa salin &tempel untuk mendapatkan banyak kueri yang terlihat seperti ini:
select max(id) as maxlocationid from locations
select max(id) as maxpersonid from persons
-- and so on... (one query for each table)
Saat Anda menemukan ID terbesar setelah menjalankan kueri di kedua database, ambil angka yang lebih besar dari ID tersebut, dan tambahkan ke semua ID di semua tabel di database kedua.
Sangat penting bahwa nomor tersebut harus lebih besar dari ID terbesar yang sudah ada di kedua database!
Agak sulit untuk dijelaskan, jadi ini contohnya:
Katakanlah ID terbesar di tabel mana pun di kedua database adalah 8000
.
Kemudian Anda menjalankan beberapa SQL yang menambahkan 10000
ke setiap ID di setiap tabel di database kedua :
update Locations set Id = Id + 10000
update Persons set Id = Id + 10000, LocationId = LocationId + 10000
-- and so on, for each table
Kuerinya relatif sederhana, tetapi ini adalah yang paling berhasil karena Anda harus membuat kueri seperti ini secara manual untuk setiap tabel dalam database, dengan nama yang benar untuk semua kolom ID.
Setelah menjalankan query pada database kedua, contoh data dari pertanyaan Anda akan terlihat seperti ini:
Basis Data 1: (persis seperti sebelumnya)
Locations
:
Id Name Adress etc....
1 Location 1
2 Location 2
Persons
:
Id LocationId Name etc...
1 1 Alex
2 1 Peter
3 2 Lisa
Basis Data 2:
Locations
:
Id Name Adress etc....
10001 Location A
10002 Location B
Persons
:
Id LocationId Name etc...
10001 10001 Mark
10002 10002 Ashley
10003 10001 Ben
Dan itu saja! Sekarang Anda dapat mengimpor data dari satu database ke database lainnya, tanpa mendapatkan pelanggaran kunci utama sama sekali.