Mysql 创建触发器以基于另一个表更新表

Mysql 创建触发器以基于另一个表更新表,mysql,sql,Mysql,Sql,我需要你的帮助。我一直在做一个触发器语句,但它似乎不起作用 当另一个名为serialcode的表上的列被更新时,我需要关于编写触发器以更新名为membership的表的帮助 详细信息:我有两个名为membership和serialcode的表。成员资格表包含以下列 id fullname email date state sn 而serialcode表只有 id sn 我希望使用serialcode中的sn值更新成员身份中的sn,其中成员身份表中的id与s

我需要你的帮助。我一直在做一个触发器语句,但它似乎不起作用

当另一个名为serialcode的表上的列被更新时,我需要关于编写触发器以更新名为membership的表的帮助

详细信息:我有两个名为membership和serialcode的表。成员资格表包含以下列

id    fullname    email    date   state    sn
而serialcode表只有

id     sn
我希望使用serialcode中的sn值更新成员身份中的sn,其中成员身份表中的id与serialcode表中的id相同

下面是我能写的

CREATE TRIGGER MembershipSerialCode
BEFORE UPDATE ON serialcode
FOR EACH ROW 
BEGIN
if :new.sn != :old.sn
then
   UPDATE membership m
   set membership.sn = :new.sn
   where m.id = :new.id;
end if;
END;
多谢各位


Mike

你能试试这个吗?如果你有幸实现它,请告诉我

CREATE Trigger TriggerName                         
 ON SerialNumberTable FOR UPDATE 

AS                         

IF (Update(sn)) -- This is the column on SerialCodeTable that will be updated first                     
BEGIN
IF EXISTS (Select i.id                      
    FROM Deleted d INNER JOIN Inserted i                      
 ON d.id = i.id
 AND d.sn <> i.sn)
 BEGIN
    UPDATE MembershipTable SET MembershipTable.sn = i.sn 
            FROM Inserted i 
            WHERE MembershipTable.id = i.id
 END
END

这有什么不对?我觉得不错。你真的想用触发器吗?它们是邪恶的,通常最好在需要的地方自己更新表。也就是说,如果你需要一个触发器,问题是否会出现在你的where子句上。。应该是:old.id?或者,它应该是m.sn=:old.sn吗?我确实知道故障来自哪里。我对其他选择持开放态度。谢谢你,非常感谢。请快速回答:在哪张桌子上;我应该插入触发器吗?触发器应该在serialcode表上,因为它是第一个被更新的表。为迟来的回复道歉…它不起作用。你试过了吗?如果是的话,你能把打印屏幕发给我吗