Seite 1 von 1
MySQL: UPDATE mit SELECT verbinden?
Verfasst: 12.11.2005, 16:54
von Daniela
Hallo,
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?
Liebe Grüße,
Daniela
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
MySQL: UPDATE mit SELECT verbinden?
Verfasst: 12.11.2005, 22:05
von innuendo
Hallo Daniela,
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.
Sieh dir mal auf MySQL.com den Thread über das Locken von Tabellen an:
https://dev.mysql.com/doc/refman/5.0/en ... ables.html
Die dirty-Variante wäre hier beschrieben:
https://www.delphipraxis.net/topic45576.html
lg,
Innuendo
MySQL: UPDATE mit SELECT verbinden?
Verfasst: 12.11.2005, 22:13
von oldInternetUser
Ein Tablelock, um eine Zeile zu bearbeiten? Gruselige Idee. Aber ich ahne - wahrscheinlich unterstützt das 'gute und beliebte mySql' nichts besseres.
MySQL: UPDATE mit SELECT verbinden?
Verfasst: 12.11.2005, 22:25
von Daniela
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.
MySQL: UPDATE mit SELECT verbinden?
Verfasst: 12.11.2005, 22:42
von AnjaK
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".