sql触发器将行插入两个表中

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)

唯一的问题是它经过并添加了之前已添加的条目.

Jan*_*Jan 4

您必须说明您正在使用哪个 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)