All*_*len 5 mysql sql triggers
我一直在寻找一种方法来创建一个触发器,将相同的行插入到具有相同值的两个表中.
例如,插入一个新行就会插入到pushNotificationQueue中,我希望将相同的行插入到消息中.
我试过这个
CREATE TRIGGER add_to_messages
after insert on mbb_pushNotificationQueue
FOR EACH ROW
insert into mbb_messages select * from mbb_pushNotificationQueue
Run Code Online (Sandbox Code Playgroud)
唯一的问题是它经过并添加了之前已添加的条目.
您必须说明您正在使用哪个 RDBMS。不管怎样,你必须使用一个特殊的表,通常命名为inserted或类似的。
这是针对 SQL Server 的:
INSERT INTO mbb_messages SELECT * FROM INSERTED
Run Code Online (Sandbox Code Playgroud)
其他如 Sybase 使用 REFERENCES 子句来获取新插入的记录:
create trigger TriggerName after insert on
TableName
referencing new as new_name
Run Code Online (Sandbox Code Playgroud)
对于 MySQL(您似乎正在使用),您可以使用 NEW 表引用新插入的记录:
CREATE TRIGGER add_to_messages
after insert on mbb_pushNotificationQueue
FOR EACH ROW BEGIN
insert into mbb_messages select * from NEW;
END;
Run Code Online (Sandbox Code Playgroud)