Mysql多表同步

时间:2015-04-06 10:13:41

标签: mysql sql

我有两张Xenforo表:

xf_user
xf_user_authenticate

xf_user存储除密码哈希之外的所有用户信息,这些信息存储在xf_user_authenticate中。

两个表都有一个名为user_id的列。

将数据插入xf_user_authenticate后,我需要从新插入的行中获取user_id,然后使用user_idxf_user获取用户名并设置其价值为xf_user_authenticate

我尝试了这段代码,但它不起作用:

CREATE TRIGGER name_sync AFTER INSERT ON xf_user_authenticate
begin
SELECT 'username' INTO @username FROM xenforo.xf_user WHERE 'user_id'=NEW.user_id;
UPDATE xenforo.xf_user_authenticate SET 'username' = @username;
end

2 个答案:

答案 0 :(得分:0)

您几乎没有语法相关问题,此外您还尝试更新插入触发器后的同一个表。您可能需要在插入之前将触发器更改为

delimiter //
create trigger name_sync before insert on xf_user_authenticate
for each row
begin
 declare user_name_sel varchar(100);
 select user_name into user_name_sel 
 from xf_user 
 where user_id = NEW.user_id;
 set new.username = user_name_sel;
end;//

delimiter ;

答案 1 :(得分:-1)

CREATE TRIGGER name_sync BEFORE INSERT ON xf_user_authenticate
BEGIN
    DECLARE cUsername VARCHAR(255);

    SELECT username INTO cUsername FROM xenforo.xf_user WHERE user_id=NEW.user_id;
    SET NEW.username = cUsername;
END