我创建了一个tickets
表,其中包含所有内容的ID,因此它们都可以是唯一的。在其他表上插入之前,tickets
表插入了新数据。我需要将tickets
表中生成的ID一下子放到其他表中。
以下是它的运行方式;
table1
ref
tickets
的插入和自动递增的ID
从插入ID
的故障单中的table1
以及第一次查询中的数据。这是我到目前为止所拥有的。
delimiter |
CREATE TRIGGER status_ref BEFORE INSERT ON status
FOR EACH ROW BEGIN
INSERT INTO tickets SET ref = S;
END;
|
delimiter ;
答案 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
表中。