【发布时间】:2020-05-08 11:13:34
【问题描述】:
我有四张桌子
- table_a
- table_b
- table_c
- table_abc
table_a、table_b、table_c 包含一个自动递增的 ID 作为主键和一些任意列。 table_abc有三个外键,分别是table_a、table_b和table_c的ID。
我想做如下插入(原子地,即如下所述的全部 1-4,或者根本不插入):
- 在 table_a 中插入
- 可以在 table_b 中进行插入
- 可以在 table_c 中进行插入
- 分别使用插入 1,2 和 3 生成的 ID 插入 table_abc,如
INSERT INTO table_abc (a_id, b_id, c_id) VALUES ([id from insert 1], [id from insert 2 or NULL],[id from insert 3 or NULL] )
现在的问题是:如何获取插入 1,2 和 3 生成的 ID 值并将它们用于插入 4?请注意,每个表的 ID 都不相同,因此 a_id 可以为 45,而 b_id 为 10,c_id 为 2。
我正在使用 Python 和 Pandas 进行插入。我当然想在每次插入后将 ID 存储在 python 变量中,但我有一种感觉,因为我想要原子性,所以事情会变得复杂。
【问题讨论】: