在缺少的密钥上插入外键,更新

时间:2015-07-21 07:19:03

标签: mysql sql

我有两张桌子:

   tbl1:  
   ============================
   ID     |      TOKEN(indexed)
   ============================
    1     |      2176
    2     |      2872
    3     |      2881
    4     |      1182

   tbl2:  
   =======================
   ID     |      TOKEN_REF
   =======================
    1     |      2
    2     |      3
    3     |      1
    4     |      1

在每次迭代中,服务器都会收到一个“令牌”,如果没有令牌,则会更新tbl1,在此示例中,令牌"5241"需要插入{{1} }}

每当收到令牌(现有或不存在)时,我都需要更新tbl1 tbl2 AUTO_INCREMENT 的内容。
如果令牌是新令牌,请先更新tbl2.ID,然后仅使用新令牌的ID更新tbl1

我正在思考INSERT ON EXIST UPDATE,但我不知道如何将它合并为一个命令。

总结:
我需要在每次迭代中INSERT ON EXIST UPDATE tbl2,并在单个命令中tbl1生成INSERTID。那可能吗?

想法?

1 个答案:

答案 0 :(得分:0)

我根据Ondřej的建议准备了一个SQLFiddle,可能会找到here

在架构中我提出了以下After Insert触发器:

CREATE TRIGGER tbl1_ai AFTER INSERT ON tbl1
FOR EACH ROW
  INSERT INTO tbl2(TOKEN_REF)
  VALUES(new.ID);