首页 > 解决方案 > 从单个表插入到具有自动 id FK 的多个表中

问题描述

不确定标题是否有助于使其更清晰。我正在尝试将 excel 文件中的日志存档导入新系统。旧数据将所有内容放入一个表中。在新系统中,这些数据被分成多个表,FK 引用主日志表的自动 ID 字段。

old table: excel_log
| id | timestamp | person | event | sub_event | subject | subj_class | ... |

new tables : master_log
| id | timestamp | person | .... |

new tables : log_ext1
| id | mlog_id | subject | subject_class | ... |

new tables : log_ext2
| id | mlog_id | event_type | sub_event | event_param |

el_idmaster_log. excel_table.id完全插入master_log.

alter table master_log add el_id int
insert into master_log (id, timestamp, person, ..., el_id )
select timestamp, person, ..., id
from excel_table

然后在 excel_table 中插入重置字段并加入master_logbyel_id以找到生成的 mlog_id

insert into log_ext1 (mlog_id, ...)
select ml.id, el.subject, el....
from excel_table el left join master_log ml on el.id = ml.el_id

这很简单,但也很麻烦,因为我必须更改表格。我想知道 SQL Server 中insert使用自动 FK 的更好方法是什么?

标签: tsqlsql-server-2012foreign-keyssql-insert

解决方案


推荐阅读