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".