2016-05-04 7 views
1

Мне нужно решение для моей проблемы. Заранее спасибо. Я использую DB Derby.Trigger After Update, ошибка: Скалярный подзапрос разрешен только для возврата одной строки

У меня есть один стол с несколькими колоннами. Я создал триггер после обновления для определенных столбцов, которые мне нужны. Когда я пытаюсь обновить столбцы в строке, я получаю эту ошибку.

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

Эта ошибка появляется только в том случае, если у меня есть две или более строк в основной таблице. Если в таблице «учетные записи» есть только одна строка, все работает нормально.

Это код триггера: (счет является основной таблицей, 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

скалярного подзапрос должен возвращать не более одной строки и ровно один столбец.

Просто используйте insert . . . select:

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