Thread Insert Into... On Duplicate Key Update... (20 answers)
Opened by rosti at 2012-05-25 20:39

pq
 2012-05-25 22:02
#158622 #158622
User since
2003-08-04
12207 Artikel
Admin1
[Homepage]
user image
soweit ich weiss, gibt es das z.b. in postgresql nicht. kann mich aber irren

mysql: oft möchte man wissen, ob ein insert stattgefunden hat und wenn ja, will man die neue id haben.

ob ein insert stattgefunden hat:
laut der doku liefert mysql eine 1 zurück, wenn ein insert stattgefunden hat, und 2, wenn ein update stattgefunden hat. ich habe hier aber z.b. eine mysql-version (vielleicht liegt es auch an DBD::mysql oder DBI), bei der immer 1 geliefert wird. zudem muss man bei mehreren unique keys aufpassen.

und die last_insert_id herauszufinden ist auch etwas komplizierter. diese funktion liefert nur etwas sinnvolles, wenn ein insert stattgefunden hat.

alles in allem also nicht so trivial.

ich benutze das selbst z.b. bei einem bulk insert von hunderten datensätzen, bei dem ich mir die ids dann in einem select danach sowieso holen muss. das ist dann schneller als alle rows einzeln einzufügen.
Last edited: 2012-05-25 22:03:15 +0200 (CEST)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Insert Into... On Duplicate Key Update...