Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Aktualisieren von Daten mit dem UPDATE Statement

Geschrieben von: Christoph Wille
Kategorie: Datenbank

This printed page brought to you by AlphaSierraPapa

Daten in einer Datenbank kann man mit ADO auf zweierlei Arten verändern - einerseits durch Verwendung eines Recordsets mit der Update Methode, als auch mit dem UPDATE Statement und dem Execute Befehl des Connection Objekts. Meist ist UPDATE die schnellere Wahl, und was noch hinzukommt, die flexiblere Lösung.

Dieser Artikel ist ein Folgeartikel zu Einfügen eines Datensatzes mit dem INSERT Statement. Es gelten für das UPDATE Statement die gleichen Voraussetzungen für Textwerte, Datumswerte und Zahlenwerte wie für das INSERT Statement.

Änderungen an einzelnen Datensätzen

Generell sieht die Syntax des UPDATE Statement vereinfacht wie folgt aus:

UPDATE Tabelle SET Feld1 = 'neuer Wert', Feld2 = 'neuer Wert'
   WHERE SchlüsselFeld = Schlüsselwert

Um also beispielweise den Nachnamen in einer Personentabelle zu ändern, könnte ein UPDATE Statement wie folgt aussehen:

UPDATE tPersonendaten SET Nachname = 'Wille'
  WHERE SozVersNummer = 4711010100

In diesem Beispiel wird - so die Spalte SozVersNummer ein Primärschlüsselfeld ist - nur dieser eine Datensatz verändert. Wenn mehrere Zeilen das Einschränkungskriterium erfüllen, so wird jede einzelne Zeile aktualisiert.

Um gleich auf eine Gefahr hinzuweisen - was passiert, wenn man auf die WHERE Clause vergisst, und folgendes Statement ausführt?

UPDATE tPersonendaten SET Nachname = 'Wille'

Nun, es fehlt die Einschränkung auf die Zeile, die verändert werden soll - und wenn es keine Einschränkung gibt, dann gilt das UPDATE für alle Zeilen! Und dann sollte man ein möglichst aktuelles Backup haben, um die Daten wieder in den Originalzustand versetzen zu können. Ergo - Vorsicht, immer das UPDATE Statement doppelt kontrollieren!

UPDATE's an mehreren Zeilen

Warum widme ich dieser Thematik eine eigene Überschrift? Der Grund ist, daß man mit dem UPDATE Statement elegant und schnell Code dieser Art beschleunigen kann:

' rs mit "SELECT * from tProducts" geöffnet
While Not rs.EOF
  rs("Preis") = rs("Preis") * 0.02
  rs.Update
  rs.MoveNext
Wend
rs.Close

Das Problem ist hier, daß ich über eine potentiell sehr große Anzahl von Zeilen iteriere, und mit den einzelnen Aufrufen von Update die Performance meiner Applikation zerstöre. Man könnte es zwar mit Tricks (client-side Cursor, etc) erträglich machen, aber es gibt eine bessere Lösung:

conn.Execute "UPDATE tProducts SET Preis=Preis*0.02"

Der Code reduziert sich auf eine Zeile, und die Arbeit des Änderns wird von der Software durchgeführt, die es am besten kann: die Datenbank.

Schlußbemerkung

Im heutigen Artikel habe ich mich auf die häufigsten Anwendungsfälle beschränkt. Die vollständige Syntax des UPDATE Statements erlaubt es unter anderen auch Berechnungen für Updates über mehrere Tabellen hinweg durchzuführen, und einiges an spannenden Dingen mehr.

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

Benutzerverwaltung leicht gemacht: Teil 1
http:/www.aspheute.com/artikel/20020429.htm
Datensätze mit dem DELETE Statement löschen
http:/www.aspheute.com/artikel/20001127.htm
Der SQL UNION Operator
http:/www.aspheute.com/artikel/20011015.htm
Ein einfacher Query Analyzer
http:/www.aspheute.com/artikel/20010420.htm
Einfügen eines Datensatzes mit dem INSERT Statement
http:/www.aspheute.com/artikel/20001107.htm
Seitenzugriffscounter für HTML Dokumente in ASP realisieren
http:/www.aspheute.com/artikel/20010426.htm
Stored Procedures einfach erstellt
http:/www.aspheute.com/artikel/20020903.htm
T-SQL Clauses: GROUP BY und HAVING
http:/www.aspheute.com/artikel/20011017.htm
Update und UpdateBatch zum Einfügen von Datensätzen in Datenbanken
http:/www.aspheute.com/artikel/20010213.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.