ich habe eine SELECT über das ich die id des Datensatzes herausbekomme mit dem ich nun gleich arbeite. Nun möchte ich in der Datenbank auch vermerken, dass dieser Wert bearebitet wird und ein Feld von 0 auf 1 setzen. Damit verhindere ich dass eine weitere Instanz des Scripts nochmal den selben Datensatz bearbeitet.
Kann ich das irgendwie in die SELECT-Abfrage einbauen oder muss ich dazu wirklich ein extra Query ausführen?
es kommt darauf an, welche MySQL Version du benützt. Im Normalfall ist es sinnvoller die Tabelle zu locken - einfach sauber. MySQL dürfte dies aber erst mit der letzten Version unterstützen, oder auch schon mit der 4er.
Komplette Table zu locken ist ja Müll - ich will weiterhin mit der Tabelle arbeiten können. Es geht nur drum die eine Zeile mit möglichst wenig Aufwand zu markieren um sie bei weiteren Abfragen auschliessen zu können.
was hindert dich daran eine zweite Update-Query hinterherzuschicken?
Selbst wenn du die Anfragen verschachtelst, hast du physikalisch immernoch zwei Datenbankabfragen, also kannst du gleich zwei machen. Macht doch nichts aus, die 2 Mikrosekunden merkst du garantiert nicht
Um zu verhindern, dass DOCH jemand in dieser Mikrosekunden den gleichen Datensatz bearbeitet, mach das UPDATE zuerst und selectiere anschließend die gelockte "mysql_insert_id".