您的位置:首页 > 数据库

数据库导出动态复杂结构的问题

2013-07-12 13:21 148 查看
在导出一些比较恶心的表设计的数据时,比如几张表,每个表都有和上一个表的父子级对应关系,当从一个环境导出到另一个环境时,id不一定相同,那么如果要保持它们之间的对应关系该如何搞定。其实有一个非常好用的办法。

比如我们有一张表,system_stack_space

declare @current_space_id int
select @current_space_id=max(space_id) from system_stack_space
insert into system_stack_space select (@current_space_id+id),space_name,@new_space_id,tstamp from #system_stack_space

declare @current_space_id2 int
select @current_space_id2=max(space_id) from system_stack_space
insert into system_stack_space select @current_space_id2+id,space_name,(@current_space_id+parent_id),tstamp from #system_stack_space


View Code
这里首先,我们获取当前库中system_stack_space这个表真正的最大id取出来

然后从临时表#system_stack_space中查出数据,并把他的自增长id加上当前最大的id作为其最终的id,并把第三段sql中的new_space_id作为他的父级id,最后插入到数据库中

对于第二个临时表,我们同样获取当前库中system_stack_space这个表真正的最大id取出来(这时候的最大id已经和上一步不一样了,他应该是上一步的最大id 加上 临时表#system_stack_space中的最大id),所以我们还是要取当前最大id加上临时表#system_stack_space2的id,来作为这批数据的最终id,而这里的父级id,应该是第一次插入数据时的最大id加上临时表#system_stack_space2的父级id(这里就相当于是临时表#system_stack_space的id),那么等同于对于到其上一级的id,这样父子级关系也就清楚了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: