0

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

这是它的运行方式;

  1. 查询插入数据table1
  2. 触发插入ref和自动递增的 IDtickets
  3. ID来自插入回的门票table1以及来自第一个查询的数据。
  4. 在此之后还有更多内容,但已排序。

这是我到目前为止所拥有的。

delimiter |

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

 END;
|

delimiter ;
4

1 回答 1

2

我建议您重新考虑您的编号方案:现在,您正在双重链接:该tickets表通过 引用详细信息,而详细信息表通过其ref引用表。ticketsID

这不是一个好主意:考虑稍后对其中一个表的更新,这会使这个双链接不同步:要么你不允许它,这使得第二个数字绝对没有意义,要么你允许它,在这种情况下你最终会得到不同的结果取决于您用于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表中。

于 2012-09-04T21:54:24.730 回答