2016-05-04 22 views
1

Ich brauche eine Lösung für mein Problem. Danke im Voraus. Ich benutze Derby DB.Trigger nach Update, Fehler: Skalare Unterabfrage darf nur eine einzelne Zeile zurückgeben

Ich habe eine Tabelle mit wenigen Spalten. Ich habe Trigger nach Update für bestimmte Spalten erstellt, die ich brauche. Wenn ich versuche, Spalten in Zeile zu aktualisieren, erhalte ich diesen Fehler.

Error code 30000, SQL state 21000: Scalar subquery is only allowed to return a single row.

Dieser Fehler tritt nur auf, wenn ich zwei oder mehr Zeilen in Haupttabelle habe. Wenn ich nur eine Zeile in der Tabelle "accounts" habe, funktioniert alles gut.

Dies ist Code für Trigger: (Konten Haupttabelle, accounts_history neue Tabelle)

CREATE TRIGGER aft_update AFTER UPDATE of balance,date 
      ON accounts 

FOR EACH ROW MODE DB2SQL 

insert into accounts_history 

(old_id,new_name,new_balance,new_date) values 
      (

(select id from accounts),(select name from accounts), 

(select balance from accounts),(select date from accounts) 
      ); 
+0

Dank bro! es funktioniert gut: D –

Antwort

1

Eine skalare Unterabfrage soll höchstens eine Zeile zurückzukehren und genau eine Spalte.

Verwenden Sie einfach insert . . . select:

insert into accounts_history(old_id, new_name, new_balance, new_date) 
    select id, name, balance, date 
    from accounts;