我有两张Xenforo表:
xf_user
xf_user_authenticate
表xf_user
存储除密码哈希之外的所有用户信息,这些信息存储在xf_user_authenticate
中。
两个表都有一个名为user_id
的列。
将数据插入xf_user_authenticate
后,我需要从新插入的行中获取user_id
,然后使用user_id
从xf_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 :(得分: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