2016-05-04 7 views
1

私の問題は解決策が必要です。前もって感謝します。私はDerby DBを使用します。更新後のトリガー、エラー:スカラーサブクエリは1行だけを返すことができます

私は、1列のテーブルが1つしかありません。私は必要な特定の列の更新後にトリガーを作成しました。行の列を更新しようとすると、このエラーが発生します。

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

このエラーは、メインテーブルに2つ以上の行がある場合にのみ表示されます。テーブル "accounts"に1行しかない場合は、すべて正常に動作します。

これはトリガのコードである:(アカウントはメインテーブル、accounts_history新しいテーブルである)

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

おかげで仲間!それはうまく動作します:D –

答えて

1

スカラサブクエリは多くても1つの行と正確に1つの列を返すことになっています。

だけinsert . . . selectを使用します。

insert into accounts_history(old_id, new_name, new_balance, new_date) 
    select id, name, balance, date 
    from accounts; 
関連する問題