Переместить данные из одной таблицы в другую, используя триггер обновления - PullRequest
2 голосов
/ 14 сентября 2010

Я новичок в разработке БД.Помогите мне создать триггер для перемещения данных из одной таблицы в другую.

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

Пожалуйста, исправьте меня в следующем триггере:

create trigger transaction_state after update on test_archive for each row begin
insert into test_me(select * from test_archive where new.Transaction_status = 2);
delete from test_archive where new.Transaction_status = 2;
end;

1 Ответ

1 голос
/ 14 сентября 2010

Почему я чувствую, что помогаю вам с домашней работой? Ваш триггер, как написано, вероятно, переместит ВСЕ строки, когда кто-то обновит строку до Transaction_Status = 2. Поскольку вы не присоединили таблицу NEW к таблице test_archive, ваши предложения WHERE будут верны для всех строк.

Если вы действительно хотите, чтобы все строки с Transaction_status = 2 были перемещены из test_archive в test_me, то избавьтесь от FOR EACH и ссылок на таблицу NEW.

create trigger transaction_state after update on test_archive 
  begin 
    insert into test_me
        select * from test_archive where Transaction_status = 2; 
    delete from test_archive where Transaction_status = 2; 
  end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...