2015-04-06 79 views
-2

我已经从Xenforo两个表:Mysql的多个表同步

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 

回答

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 ; 
+0

同...再次错误:#1064 - 你在你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以获得在第4行“'附近使用的正确语法 – 1461748123 2015-04-06 10:36:00

+0

您是否在msql cli或phpmyadmin上运行此操作。 – 2015-04-06 10:37:46

+0

phpmyadmin,我应该在MySQL客户端运行它吗? – 1461748123 2015-04-06 10:47:55

-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 
+0

它返回一个错误:#1064 - 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以找到在第2行'BEGIN DECLARE cUsername VARCHAR(255)'附近使用的正确语法 – 1461748123 2015-04-06 10:34:45