SQL update voor enkel aangepaste velden

Status
Niet open voor verdere reacties.

tuning4you

Gebruiker
Lid geworden
3 jun 2007
Berichten
328
Hallo

Ik ben bezig aan een applicatie die gebruikersgegevens synchroniseert naar een SQL database vanuit een andere brontoepassing. Deze gegevens omvat o.a. naam, adres, geboortedatum, etc..
Wanneer in bron deze gegevens wijzigen, dan zou dit in de database moeten worden overgebracht. Is er een mogelijkheid om enkel de rijen aan te passen waar effectief een veld gewijzigd werd in de bron zodat er ook een veld updatedatum kan worden bijhouden?

Of is het voor performantie enkel maar aan te raden om een update SQL string uit te voeren voor alle velden?

Groeten,
Andy
 
Ik snap de vraag niet helemaal. Je kunt met UPDATE toch enkel de velden aanpassen die je wil?
 
In het bronbestand staan bijvoorbeeld contactgegevens van je vrienden. Deze worden via SQL overgezet naar een database elke dag om bv. 11u.
Je past in bronbestand bijvoorbeeld een adres aan van vriend X maar wijzigt niets van je overige vrienden. Om 11u loopt synchronisatie door de applicatie die ik wens te maken. Deze overloopt alle vrienden uit je bronbestand maar zou enkel maar de gegevens van vriend X mogen wijzigen in plaats van een SQL UPDATE van alle vrienden uit het bronbestand. Zo kan je eventueel ook een kolom met wijzigingsdatum bijhouden in je database.

Ik hoop dat dit wat duidelijker is?
 
Ja, maar dat is nog steeds een designkeuze. Je kunt alles doorlopen, maar ook gewoon bijhouden wat er veranderd is clientside en alleen dat parsen. In principe is dat het idee achter transactions in andere databases. Je stuurd dan alleen de transacties tussen databases en kun je eventueel ook nog apart backuppen om te voorkomen dat je tussentijds data verliest.
 
Je bedoelt bijhouden in het bronbestand welke velden werden gewijzigd en enkel deze wijzigingen gaan doorvoeren naar database? Want dat is niet mogelijk. Dit kan bijvoorbeeld een tekstbestand zijn dat je doorloopt en wegschrijft naar de database.
 
waarom is dat niet mogelijk dan? we hebben geen kristallen bol. Het is technisch mogelijk om enkel gewijzigde onderdelen te updaten. Hoe je dat implementeert en welke beperkingen daar rond zijn dat is wat anders
 
Dat is nou het probleem. Ik weet niet direct hoe te beginnen.

Het lijkt erop dat ik eerst een query moet lanceren indien de persoon al in de database zit. Indien niet moet een INSERT uitgevoerd worden. Indien de persoon wel al in de database zit, dan moet ik nagaan welke velden beschikbaar zijn in database en vergelijken met de velden uit het bronbestand. Zijn deze verschillend, dan moet er een UPDATE uitgevoerd worden. Echter lijkt me voor performantie dan gewoon beter om direct van alle personen een UPDATE uit te voeren, ook al zijn ze niet gewijzigd in de bron. Tenzij er eenvoudiger manieren bestaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan