使用自动ID FK从单个表插入多个表

时间:2019-07-15 13:29:24

标签: tsql sql-server-2012 foreign-keys sql-insert

不确定标题是否使标题更加清晰。 我正在尝试将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_id中添加了辅助字段master_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_log引向el_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中用自动FK做insert的更好方法是什么?

0 个答案:

没有答案