问题: 我正在尝试创建一个触发器,它将记录从数据库 A 中的 2 个不同表(用户、地址)复制到数据库 B 中的单个表(用户)。
基本上,我试图将数据合并到不同数据库中的单个表中。
我有以下触发器
CREATE TRIGGER `Copy db1_user to db2_users`
AFTER INSERT ON `user`
FOR EACH ROW
BEGIN
INSERT INTO database2.users(user_id, user_email, user_firstname, user_lastname)
VALUES (NEW.user_id, NEW.email, NEW.first_name, NEW.last_name);
END
上面的工作正常,我绞尽脑汁从地址表中获取其他数据块。我已经创建了我想要实现的目标的图表,希望它有意义。哦,它还需要确保目标表中不存在user_id,这不应该存在,因为源表中的user_id字段是自动增量的。
我的另一个问题是,鉴于 2 个源表的写入时间略有不同,我不确定在哪里触发此触发器?如果我在表(用户)上插入后触发它,表(地址)是否已被写入?不确定 - 不是我的代码(这是我正在深入研究的 WordPress 应用程序),因此任何关于在哪里保存此触发器的建议都会很棒。
如有建议或帮助,我们将不胜感激。
如果您的架构位于同一服务器中,则使用 2 个触发器就可以解决问题。
这可以通过使用来实现
INSERT....ON DUPLICATE KEY UPDATE
。触发器1
触发器2
参见示例
注意,我用于
null
不存在的列。另一种方法是测试是否存在然后更新,否则使用表
user_id
中存在的所有列进行插入。users
database2
触发器1
触发器2
参见示例