向具有相同ID的某些表插入行

时间:2015-06-11 10:05:44

标签: mysql database auto-increment

我需要将实体插入到多个表中。表中的行数不相等,但我需要从所有表中获取该实体的id。在oracle中我们可以对所有这些表使用相同的序列,但是我们可以在mysql中做什么来做这样的事情呢? (我不能使用外键或使用最后插入的id,因为每个实体在某些表中插入行,而不是所有表中插入行中没有序列。) 像这样:

实体:

E1:a1,a2,a3,a4,a5,a6

E2:B1,B2,B3,B4,B5

E3:C1,C2,C3,C4,C5

E4:D1,D2,D3,D4,D5,D6

表1:

  Id  | col1 | col2
   5    a1      a2
   3    c1      c2

表2:

 Id  | col1 | col2
  1     b3     b4
  4     d3     d4
  5     a3     a4

表3:

  Id  | col1 | col2
   4     b5     b6
   5     a5     a6

然后我可以通过id = 5

连接表并获取E1

1 个答案:

答案 0 :(得分:0)

您可以使用"辅助键"作为InsertID,或类似的东西,并通过它获取。这样你就不会搞砸主键的AI(Id)。

如果是insert,您可以从所有表中获取最高的InsertID,并为当前插入手动递增,因此它将是连续且不同的。

更新:其他方式是使用某种关系表。如果修复了表的数量,则可以使用修复ID | Table1ID | Table2ID | ...结构,其中[TableName] ID是包含实体的表的外键。

如果表的数量可变,您可以使用以下内容:ID | InsertID | TableID | RowID,其中InsertID是插入的标识符(这是您可以在您的情况下查询的ID),TableID是表identifier和RowID是给定表中实体的ID。