MYSQL存储过程:如何删除刚刚更新的记录

时间:2012-12-04 13:50:33

标签: mysql stored-procedures

我有两个表名:registeredList& deregisteredlist。现在,当用户从“registeredlist”表中取消注册时,触发器将其信息更新为注销表并从注册表中删除该记录。在我的下面proc我可以正确更新它但不能从注册表中删除用户。我的过程:

DELIMITER $$
USE `abc_db`$$
DROP TRIGGER  `UnsubscriberListTrigger`$$
CREATE        
    TRIGGER `UnsubscriberListTrigger` AFTER UPDATE ON `registeredlist` FOR EACH ROW 
    BEGIN        
     IF (old.SubscriberStatus='registered') THEN    
       INSERT INTO deregisteredlist(name,SubscriberStatus,DeRegistrationDate) 
       VALUES(old.name,'Deregistered',NOW());

       DELETE from registeredlist where old.id=new.id;/???????/I am getting problem here           
     END IF;
 END $$
DELIMITER ;

提前致谢。

2 个答案:

答案 0 :(得分:2)

我认为您需要的是在WHERE声明中更改DELETE。 它应该是这样的:

DELETE from registeredlist where id=old.id; // (or new.id cause in this case old.id is equal to new.id)

...因为您希望将其与id列匹配。

<强>更新

另一种可能性是: - 在deregisteredlist上创建AFTER INSERT TRIGGER,它将在registeredlist中执行删除操作。这样你就不会得到那个错误。

答案 1 :(得分:0)

试试这个::

DELETE from registeredlist order by updateddat desc limit 1;