运行MySQL 5.5.8我想通过触发器将记录插入到多个表中。到目前为止,这是我的触发器:
CREATE TRIGGER userlevel_insert 插入db.tablename之后 对于每一行 INSERT IGNORE INTO db.differenttable(col1,col2)VALUES(NEW.val1,2);
这很有效。没有任何问题。但是我希望插入命中多个表。该表实际上是相同的结构,但在不同的数据库中。以下引发错误:
CREATE TRIGGER userlevel_insert 插入db.tablename之后 对于每一行 INSERT IGNORE INTO db.differenttable(col1,col2)VALUES(NEW.val1,2); INSERT IGNORE INTO db.secondtable(col1,col2)VALUES(NEW.val1,2);
错误是: 错误代码:1054 未知列' NEW.val1'在'字段列表'
那么如何使用触发器将相同的数据插入多个表中呢?
答案 0 :(得分:1)
我在其他地方找到了这个解决方案:将新值设置为变量,然后插入到表中。可能存在性能问题,但我的插入只会每天运行一次,并且添加的记录总数将是最小的。我可以看到这作为存储过程更有效,但现在可以使用。
CREATE TRIGGER doku_users_ins AFTER INSERT ON users_web.users
FOR EACH ROW
BEGIN
DECLARE new_pass VARCHAR(255); -- choose the datatypes
DECLARE new_email VARCHAR(255); --
DECLARE new_user INT; --
SET new_pass = NEW.pass ;
SET new_email = NEW.email ;
SET new_user = NEW.user ;
INSERT INTO users_web.doku_users (login, pass, email)
VALUES (new_user, md5(new_pass), new_email);
INSERT INTO users_web.doku_usergroup (uid, gid)
SELECT du.uid, '2' FROM doku_users du
WHERE new_user = du.login;
END |
在dba.stackexchange上为ypercube提供解决方案。