插入插入另一个表的值

时间:2012-09-04 21:44:57

标签: mysql

我创建了一个tickets表,其中包含所有内容的ID,因此它们都可以是唯一的。在其他表上插入之前,tickets表插入了新数据。我需要将tickets表中生成的ID一下子放到其他表中。

以下是它的运行方式;

  1. 查询将数据插入table1
  2. ref
  3. 中触发tickets的插入和自动递增的ID 从插入ID的故障单中的
  4. table1以及第一次查询中的数据。
  5. 在此之后继续进行,但已经排序了。
  6. 这是我到目前为止所拥有的。

    delimiter |
    
    CREATE TRIGGER status_ref BEFORE INSERT ON status
    FOR EACH ROW BEGIN
     INSERT INTO tickets SET ref = S;
    
     END;
    |
    
    delimiter ;
    

1 个答案:

答案 0 :(得分:2)

我建议你重新考虑你的编号方案:现在,你是双重链接:tickets表通过ref引用详细信息,详细信息表引用tickets表格通过其ID

这不是一个好主意:想想以后对其中一个表的更新,这会使这个双链接失去同步:要么你不允许,这会使第二个数字毫无意义,或者你允许它,在这种情况下你结束取决于您用于JOIN的哪个字段。

您应该选择一个带有一个主要表格的编号方案 - 我个人只是放弃将tickets.ID链接回详细信息表格的要求。

修改

似乎这是对我ref字段含义的误解 - 从其他评论判断,我并不孤单。

如果ref字段仅包含有关类型的参考信息,则您可以轻松选择:在refID表格上创建其他字段tickets ,存储详细信息表的(自动递增)ID字段。你需要像

这样的东西
ALTER TABLE tickets ADD COLUMN refID INT NOT NULL;

-- the following only if you not already have it
ALTER TABLE status ADD COLUMN ID INT AUTO_INCREMENT PRIMARY KEY;

CREATE TRIGGER status_ref BEFORE INSERT ON status
FOR EACH ROW BEGIN
 INSERT INTO tickets SET ref = S, refID=NEW.ID;
END;

这将详细信息表ID存储在tickets表中。