UPDATE-Problem

05/11/2008 - 08:46 von Rüdiger Hausmann | Report spam
Hallo,
ich habe (offenbar) ein Verstàndnisproblem bei der Benutzung der
UPDATE-Anweisung.

Ich möchte in einer Tabelle (tblTabelle) ein Feld (tinyintFeld) updaten,
an Bedingungen genküpft, die in diesem Feld selbst liegen. Es liegen
meherer Datensàtze vor, die diese Bedingung erfüllen. Folgendes habe ich
versucht:

Update tblTabelle SET tinyintFeld Case
when (tinyintFeld = 0 and Erst_am > '23.01.2008')
then 100
when (tinyintFeld = 1 and Erst_am > '23.01.2008')
then 101
end

Im QA wird die Syntax nicht bemàngelt, aber beim Auslösen folgende
Fehlermeldung ausgegeben:

"Server: Nachr.-Nr. 512, Schweregrad 16, Status 1, Prozedur
tblTabelle_UPDATE, Zeile 5
Die Unterabfrage gab mehr als einen Wert zurück. Das ist ungültig, wenn
die Unterabfrage auf =, !=, <, <= , >, >= folgt oder als Ausdruck
verwendet wird.
Die Anweisung wurde beendet."

Wo liegt mein Fehler, bzw. wie kann ich denn mehrere Datensàtze mit einer
UPDATE-Anweisung aktualisieren?

Der Fehler tritt auch auf, wenn ich nur eine when-Bedingung benutze.
Vielen Dank,
Rüdiger
 

Lesen sie die antworten

#1 Hannes Brunner
05/11/2008 - 10:38 | Warnen spam
Hallo Rüdiger,

Rüdiger Hausmann schrieb:
Hallo,
ich habe (offenbar) ein Verstàndnisproblem bei der Benutzung der
UPDATE-Anweisung.

Ich möchte in einer Tabelle (tblTabelle) ein Feld (tinyintFeld) updaten,
an Bedingungen genküpft, die in diesem Feld selbst liegen. Es liegen
meherer Datensàtze vor, die diese Bedingung erfüllen. Folgendes habe ich
versucht:

Update tblTabelle SET tinyintFeld > Case
when (tinyintFeld = 0 and Erst_am > '23.01.2008')
then 100
when (tinyintFeld = 1 and Erst_am > '23.01.2008')
then 101
end



fehlt da nicht ein else-Zweig? Was passiert also z.B. bei tinyintFeld=2?

Im QA wird die Syntax nicht bemàngelt, aber beim Auslösen folgende
Fehlermeldung ausgegeben:

"Server: Nachr.-Nr. 512, Schweregrad 16, Status 1, Prozedur
tblTabelle_UPDATE, Zeile 5
Die Unterabfrage gab mehr als einen Wert zurück. Das ist ungültig, wenn
die Unterabfrage auf =, !=, <, <= , >, >= folgt oder als Ausdruck
verwendet wird.
Die Anweisung wurde beendet."



Hmm, tblTabelle_UPDATE, das riecht nach einem Trigger. Welcher nicht
sauber programmiert ist. Such mal in der Richtung.

Gruß
Hannes

Ähnliche fragen