Anmelden

View Full Version : SQLcode -811, SQLstate 21000



deni87991
26-10-06, 10:02
Ich habe einen After-Update-TRG auf die abhängige Datei erstellt. Er schaut nach, ob der geänderte Wert in der abhängigen Tabelle von dem Wert in der Elterntabelle abweicht. Ist dies der Fall, soll die Elterntabelle an dieser Stelle ein Update durch diesen geänderten Wert erhalten. Der TRG wurde auch erstellt, aber beim Testen laufe ich immer auf SQLcode -811; SQLstate 21000:

"The result of a SELECT INTO is a result table of more than one row, or the result of the subquery of a basic predicate is more than one value."

Ich versteh das aber nicht ganz, da in meinem TRG ja gar kein SELECT INTO drin ist und ich nicht weiß, was ich jetzt ändern muß. Meine Testtabellen enthalten nur je 2 Datensätze, an denen ich den TRG ausprobieren wollte.

Create trigger Test.Mittwoch
after update of adresse on test.auftrag
referencing new row as new_row
for each row mode db2sql

begin

select* from Test.kunde where new_row.strasse <> test.kunde.strasse;
update Test.kunde set strasse = new_row.strasse;

end

Auslöser MITTWOCH wurde in TEST erstellt.


Kann mir jemand helfen und mir sagen, was ich wieder falsch mach?

Fuerchau
26-10-06, 10:35
Dein Select liefert doch mehr als 1 Zeile, wenn die STrasse mehrfach vorkommt.

Ist deine eindeutiger Schlüssel nicht sowas wie eine Kunden-Nr. ?

Dann musst du folgendes tun:
select strasse into :xstrasse from kunde where kdnr=new_row.kdnr
if ...

Ausserdem macht dein Update ja was ganz schlimmes:

update Test.kunde set strasse = new_row.strasse

SETZT ALLE STRASSEN ALLER KUNDEN AUF DIE NEUE STRASSE !!!!

Ich denke du musst da wohl noch ein bisserl in die Logik einsteigen.