# Update und Insert Gleichzeitig?



## rog (5. Jun 2006)

Hallo liebe Leute,

wie geht man vor, wenn man in einer Tabelle Daten eintragen soll, die teilweise schon vorhanden sind?

Man stelle sich vor in meiner "Zieltabelle" sind folgende 2 Datensätze (Primary key ist die Personenspalte

person1:adresse1:telefon1
person2:adresse2:telefon2


Nun bekomme ich aus einer anderen "Quelltabelle" folgende Datensätze mit 
select * from quelltabelle;

person2:adresse2:neuetelefonnummer
person3:adresse3:telefon3


Um dieses Resultset in meiner Datenbank richtig eintragen zu können, müsste ich eigentlich sagen
dass in der Zieltabelle der Datensatz von Person2 geändert gehört (update) und der
Datensatz von person3 neu eingetragen gehört (insert).

Kann eine Datenbank das irgendwie selbst lösen?
(Also Bestehende Keys mit update überschreiben und neue neu inserten)
Oder wie gehe ich da vor? Kommt mir relativ mühsam vor, wenn ich erst Prüfe welche Keys in der Zieltabelle sind dann die mit den keys im Resultset aus der Quelltabelle vergleiche und dann je nachdem ein insert oder update mache.

Vielen Dank für etwaige Tips.

lg
rog


----------



## bronks (5. Jun 2006)

rog hat gesagt.:
			
		

> ... Kommt mir relativ mühsam vor ...


Das ist nicht mühsam und könnte etwa so aussehen:

```
insert into zieltabelle select * from quelltabelle as q inner join zieltabelle as z where z.personid is null;
update zieltabelle set .. ... inner join zieltabelle as z where z.personid not is null;
```
Viel Erfolg!


----------



## rog (5. Jun 2006)

Hallo,
super, danke für deine Antwort. 
Werde mir das dann morgen noch im Detail ansehen.

lg
rog


----------

