Mysql触发将数据从一个表传递到另一个匹配表

时间:2017-10-16 10:43:20

标签: mysql triggers

我的table1包含列(id,firstname,lastname),table2包含列(id,firstname,lastname,ans3,mission,matchid)。到目前为止,我已经创建了这个触发器,它将table1中的firstname和lastname插入table2。现在我想要的是将table2中的matchid与table1中的id连接起来。例如,当matchid = 1时,显示来自table1且id = 1的记录,并且table2记录在同一行中。这是我到目前为止用触发器做的事情。

DELIMITER //

CREATE TRIGGER after_user_insert AFTER INSERT ON table1
FOR EACH ROW
BEGIN

  INSERT INTO table2 (firstname, lastname, matchid)
  VALUES (NEW.firstname, NEW.lastname, NEW.id);

END; //

DELIMITER ;

这是我在phpmyadmin中获得的照片。你可以看到我没有想到如何将table2.matchid加入table1.id

You can see that i didn't figure how to join table2.matchid to table1.id

--- 修改 --- enter image description here

1 个答案:

答案 0 :(得分:2)

从您的评论中,您可能想要更新table2中已存在的用户记录。如果是这样,您可以在更新时使用ON DUPLICATE KEY

DELIMITER //

CREATE TRIGGER after_user_insert AFTER INSERT ON table1
FOR EACH ROW
BEGIN

    INSERT INTO table2 (firstname, lastname, matchid)
    VALUES (NEW.firstname, NEW.lastname, NEW.id)
    ON DUPLICATE KEY UPDATE matchid = NEW.id;

END; //

DELIMITER ;

此解决方案要求table2中的名字和姓氏都有唯一索引。如果您没有这样的唯一索引,那么您可以添加一个:

ALTER TABLE table2 ADD UNIQUE unq_idx (firstname, lastname);