使用更新触发器将数据从一个表移动到另一个表

时间:2010-09-14 13:08:29

标签: mysql sql triggers

我是数据库开发的新手。请帮我创建一个触发器,将数据从一个表移动到另一个表。

我有两个表,一个包含“Transaction Status”,我希望将事务状态更改的记录移动到另一个已完成事务的表中。因此,一个表中的值将被删除,并将插入到另一个表中。

请在以下触发条目中纠正我:

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 个答案:

答案 0 :(得分:1)

为什么我觉得我在帮你做作业?当有人将行更新为Transaction_Status = 2时,您的触发器可能会移动所有行。由于您没有将NEW表连接到test_archive表,因此所有行的WHERE子句都为true。

如果您确实希望将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;