用下表:
Party.(PartyId, PartyTypeCode)
和 Member.(MemberId (FK), Name)
我想在创建新派对后用派对 ID 的值填充 MemberId 列。
我知道下面的 SQL 是错误的,但这就是我寻求帮助以使其正确的原因。
CREATE TRIGGER tgr_member_create AFTER INSERT on Party
FOR EACH ROW BEGIN
IF NEW.PartyTypeCode = 'M' THEN
INSERT Member(MemberId)
VALUES('Party.PartyId')
END IF;
END;
感谢 Nanne 的投入,这是有效的:
DELIMITER $$
CREATE TRIGGER tgr_member_create AFTER INSERT on Party
FOR EACH ROW BEGIN
IF NEW.PartyTypeCode = 'M' THEN
INSERT Member (MemberId,Name)
VALUES(NEW.PartyId, 'someName');
END IF;
END;$$
DELIMITER ;
最佳答案
您的值应该调用 NEW
行,就像您对 partytypecode 所做的那样吗?我假设
delimiter $$
CREATE TRIGGER tgr_member_create AFTER INSERT on Party
FOR EACH ROW BEGIN
IF NEW.PartyTypeCode = 'M' THEN
INSERT Member (MemberId,Name)
VALUES(NEW.PartyId, 'someName')
END IF;
END;$$
注意分隔符代码。因为您在内部使用 ;
,所以您不能将它用作普通的“命令结束”标记。这就是为什么 &&
用于调试: 当您在触发器之外执行查询时,请确保查询有效:
INSERT Member (MemberId,Name)
VALUES(party-id goes here, 'someName')
这里可能有一个小错误。显然填写你的partyId。
关于mysql - 帮助编写 MySQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415434/