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

Datensätze mit dem DELETE Statement löschen

Geschrieben von: Christoph Wille
Kategorie: Datenbank

This printed page brought to you by AlphaSierraPapa

Im heutigen Artikel beschäftigen wir uns mit einem weiteren SQL Statement - dem DELETE Kommando. Mit diesem kann man einfach, schnell und bequem Datensätze aus einer Tabelle löschen - und man überlässt dabei die gesamte Arbeit der Datenbank.

Im Vergleich zu INSERT oder UPDATE ist die Syntax sogar noch um einiges einfacher:

DELETE FROM TableName WHERE Condition

Wenn man also vor hat, die gesamte Tabelle unwiderbringlich (außer durch Restore) von Datensätzen zu säubern, so sieht das DELETE Statement wie folgt aus (für die titleauthor Tabelle aus der Datenbank pubs des SQL Server):

DELETE FROM titleauthor

Zugegebenermaßen kommt das wohl eher etwas selten vor - eher will man Datensätze gezielt aus der Tabelle löschen, und zwar vielleicht so:

DELETE FROM titleauthor WHERE title_id='BU2075'

Wie man sieht, gelten hier die gleichen Regeln für Zeichenketten wie überall anders in SQL auch - die Strings müssen mit Apostrophen eingegrenzt werden. Weiters gilt für DELETE auch das gleiche wie für UPDATE - entspricht mehr als ein Datensatz dem Kriterium, wird auch dieser von der Aktion berührt, was im Falle des DELETE Statements die Löschung ist.

Sehen wir uns das oben gezeigte DELETE Statement einmal in "Action" an - in einer einfachen, aber bereits sehr optimierten ASP Seite:

<%
strSQLServerName = "StrangeLove"
strDatebaseName = "pubs"
strUserName = "sa"
strPassword = ""
	
strConnection = "Provider=SQLOLEDB;Data Source=" & strSQLServerName & _
  ";Initial Catalog=" & strDatebaseName & ";User ID=" & strUserName & _
  ";Password=" & strPassword & ";"
	
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConnection

Const adCmdText = 1
Const adExecuteNoRecords = 128
nRowsAffected = CLng(0)
conn.Execute "DELETE FROM titleauthor WHERE title_id='BU2075'", _
    nRowsAffected, adCmdText Or adExecuteNoRecords

Response.Write nRowsAffected & " Records gelöscht"
%>

Der Grund, warum ich hier von einer hochoptimierten Seite rede, ist folgender: ich teile der Execute Methode sehr genau mit, was sie von mir bekommt (adCmdText), und was ich von ihr nicht will (adExecuteNoRecords). Der Vorteil Nummer Eins ist, ADO muß nicht herausfinden, welche Art von Kommando ich absetzen will. Der Vorteil Nummer Zwei ist, ADO erstellt kein Recordset Objekt umsonst, was eine deutliche Beschleunigung bringt.

Erwähnenswert ist sicherlich auch noch die Variable nRowsAffected. Diese liefert mir die Anzahl der Datensätze, die vom DELETE Kommando gelöscht wurden. Damit kann man eine nette Benutzerausgabe generieren.

Die beiden Konstanten adCmdText und adExecuteNoRecords sind in dieser ASP Datei händisch deklariert, ich hätte diese allerdings auch über das METADATA Statement automatisch deklarieren lassen können:

<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" 
	TYPE="TypeLib" 
	UUID="{00000205-0000-0010-8000-00AA006D2EA4}"
-->

Schlußbemerkung

Auch das DELETE Statement kann ADO Fehler auslösen, und zwar meist dann, wenn Fremdschlüsselbeziehungen durch das Statement verletzt werden würden. Ergo - eine Fehlerbehandlung sollte man auf alle Fälle einplanen!

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

Aktualisieren von Daten mit dem UPDATE Statement
http:/www.aspheute.com/artikel/20001124.htm
Benutzerverwaltung leicht gemacht: Teil 1
http:/www.aspheute.com/artikel/20020429.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
Stored Procedures einfach erstellt
http:/www.aspheute.com/artikel/20020903.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.