Du säger att båda kunderna använder din applikation, så jag antar att det är någon form av "shrink-wrap"-programvara som används av fler kunder än bara dessa två, eller hur?
Om ja, att lägga till speciella kolumner i tabellerna eller något liknande kommer förmodligen att orsaka smärta i framtiden, eftersom du antingen måste ha en specialversion för dessa två kunder som kan hantera de ytterligare kolumnerna. Eller så måste du introducera dessa kolumner i din huvudkodbas, vilket innebär att alla dina andra kunder också skulle få dem.
Jag kan komma på ett enklare sätt att göra detta utan att ändra någon av dina tabeller eller lägga till några kolumner.
För att detta ska fungera måste du ta reda på det största ID som finns i båda databaserna tillsammans ( oavsett i vilken tabell eller i vilken databas det är) .
Detta kan kräva lite kopiering och inklistring för att få många frågor som ser ut så här:
select max(id) as maxlocationid from locations
select max(id) as maxpersonid from persons
-- and so on... (one query for each table)
När du hittar det största ID:t efter att ha kört frågan i båda databaserna, ta ett nummer som är större än det ID:n och lägg till det till alla ID:n i alla tabeller i den andra databasen.
Det är mycket viktigt att antalet måste vara större än det största ID som redan finns i båda databaserna!
Det är lite svårt att förklara, så här är ett exempel:
Låt oss säga att det största ID:t i någon tabell i båda databaserna är 8000
.
Då kör du lite SQL som lägger till 10000
till varje ID i varje tabell i den andra databasen :
update Locations set Id = Id + 10000
update Persons set Id = Id + 10000, LocationId = LocationId + 10000
-- and so on, for each table
Frågorna är relativt enkla, men det här är det mesta arbetet eftersom du måste bygga en fråga som denna manuellt för varje tabell i databasen, med de korrekta namnen på alla ID-kolumner.
Efter att ha kört frågan på den andra databasen kommer exempeldata från din fråga att se ut så här:
Databas 1: (exakt som tidigare)
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
Databas 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
Och det är allt! Nu kan du importera data från en databas till den andra, utan att få några primärnyckelöverträdelser alls.