Mysql 创建触发器以基于另一个表更新表
我需要你的帮助。我一直在做一个触发器语句,但它似乎不起作用 当另一个名为serialcode的表上的列被更新时,我需要关于编写触发器以更新名为membership的表的帮助 详细信息:我有两个名为membership和serialcode的表。成员资格表包含以下列Mysql 创建触发器以基于另一个表更新表,mysql,sql,Mysql,Sql,我需要你的帮助。我一直在做一个触发器语句,但它似乎不起作用 当另一个名为serialcode的表上的列被更新时,我需要关于编写触发器以更新名为membership的表的帮助 详细信息:我有两个名为membership和serialcode的表。成员资格表包含以下列 id fullname email date state sn 而serialcode表只有 id sn 我希望使用serialcode中的sn值更新成员身份中的sn,其中成员身份表中的id与s
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表上,因为它是第一个被更新的表。为迟来的回复道歉…它不起作用。你试过了吗?如果是的话,你能把打印屏幕发给我吗