我是数据库开发的新手。请帮我创建一个触发器,将数据从一个表移动到另一个表。
我有两个表,一个包含“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;
答案 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;