Tom: MySQL 5.x : Update und Insert zusammenbinden?

Beitrag lesen

Hello Dedlfix,

Meine Datenbanken sind leider vollständig mit MyISAM gebaut. Da muss ich die erstmal umbauen. Aber ich habe noch im Gedächtnis, dass Relations mit MyISAM auch nicht möglich sind, aber mit InnoDB. Dann würde es sich wenigstens lohnen.

Vergiss nicht, einen Performance-Test durchzuführen. All die netten InnoDB-Features gibt es nicht zum Nulltarif. http://dev.mysql.com/doc/refman/5.1/en/storage-engine-compare-transactions.html

Die erste Aufgabe, die ich dann mal damit angehen würde, wäre das beliebte "Insert Before" oder auch "Insert Behind". Dazu mussten bisher (symbolisch) die Statements

before:

lock table tabelname;
  select @nummer := lfdnr from tablename where id = $id;
  update tablename set lfdnr = lfdnr+1 where lfdnr >= @nummer;
  insert into tabelename (lfdnr,  ... columnlist) values (@nummer, ... valuelist);
  unlock table tablename;

ausgeführt werden.

Vielleicht kann man das ja mit einem "select .. for update" besser machen, dass wenigstens nur noch die Datensätze gesperrt werden, die auch manipuliert werden.

da bringe ich jetzt nur das Insert noch nicht unter.

Liebe Grüße aus dem Cyberspace

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de