我需要将实体插入到多个表中。表中的行数不相等,但我需要从所有表中获取该实体的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答案 0 :(得分:0)
您可以使用"辅助键"作为InsertID,或类似的东西,并通过它获取。这样你就不会搞砸主键的AI(Id)。
如果是insert,您可以从所有表中获取最高的InsertID,并为当前插入手动递增,因此它将是连续且不同的。
更新:其他方式是使用某种关系表。如果修复了表的数量,则可以使用修复ID | Table1ID | Table2ID | ...
结构,其中[TableName] ID是包含实体的表的外键。
如果表的数量可变,您可以使用以下内容:ID | InsertID | TableID | RowID
,其中InsertID是插入的标识符(这是您可以在您的情况下查询的ID),TableID是表identifier和RowID是给定表中实体的ID。