当前位置: 首页 > 面试题库 >

将一个表中的数据插入多个表中

费子濯
2023-03-14
问题内容

我正在使用SQL Server 2005。

我正在将数据从当前数据库(单个表)迁移到新数据库(规范化-许多表)。在新数据库中,我有一个基表(我们称它为“
BaseTable”)和多个其他表(我们称它们为"DependentA""DependentB")。来自旧数据库的某些数据将转到BaseTable,而另一些将转到其他两个。BaseTable与DependentA和DependentB都具有一对一关系,使用它们的ID作为外键。

所以这是我的问题。我应该如何迁移数据?这是我一直在尝试的查询,除了一件事之外,它一直在工作:BaseTable中其他两个的外键是相同的,而不是每个都不同。

Begin SQL:

BEGIN TRANSACTION

DECLARE @dep1Id int

DECLARE @dep2Id int

INSERT INTO DependentA (column1, column2)
SELECT c1, c2
FROM OldDatabase.OldTable
SELECT @dep1Id = Scope_Identity()

INSERT INTO DependentB (column3, column4)
SELECT c3, c4
FROM OldDatabase.OldTable
SELECT @dep2Id = Scope_Identity()

INSERT INTO BaseTable (column5, dependentTable1Id, dependentTablr2Id)
SELECT c5, @dep1Id, @dep2Id
FROM OldDatabase.OldTable

COMMIT

问题答案:

问题在于@ dep1Id和@ dep1Id是标量,并且仅保留两个基于集合的插入中的最后一个值。

由于这是一个关闭,您可能应该将其作为光标

DECLARE CURSOR @curs FOR
SELECT c1,c2,c3,c4,c5 FROM OldDatebase

open @curs
fetch next from @curs into
@c1,@c2,@c3,@c4,@c5 --declare these!

while @@fetch_status <> 0
BEGIN

INSERT INTO DependentA (column1, column2) VALUES @c1, @c2

SELECT @dep1Id = Scope_Identity()

INSERT INTO DependentB (column3, column4) VALUES @c3, @c4

SELECT @dep2Id = Scope_Identity()

INSERT INTO BaseTable (column5, department1Id, department2Id) @c5, @dep1Id, @dep2Id

fetch next from @curs into
@c1,@c2,@c3,@c4,@c5
END
close @curs
deallocate @curs

我的光标语法可能充满了错误,但是您明白了。



 类似资料:
  • 问题内容: 我有2个不同的表,但各列的命名略有不同。我想从一个表中获取信息,然后将其放入另一个表中。仅当表1中的“信息字段”不为null时,才需要将表1中的信息放入表2中。表2在创建任何东西时都有一个唯一的ID,因此插入的任何东西都需要获得下一个可用的ID号。 表格1 表2 问题答案: 这应该工作。您无需担心Table2中的identify字段。

  • 问题内容: 我想从一个表中读取所有数据,然后将一些数据插入到另一个表中。我的查询是 但我有一个错误 请帮我。 问题答案: 您可以使用INSERT … SELECT语法。请注意,您可以在SELECT部分​​中直接引用“ 1”。

  • 问题内容: 我试图将数据从一个表插入到另一个表,这是我收到的错误消息: 错误:将INERT插入到content2(d1,d2,d3)值(John,Doo,24); 错误:在字段列表中插入未知列’John’错误:INSERT INTO content2(d1,d2,d3)VALUES(Mary,Moe,36); ‘字段列表’中的未知列’Mary’错误:INSERT INTO content2(d1,

  • 嗨,我想使用客户id在一个表中插入客户名称,在另一个表插入客户城市。我的代码只插入客户。城市没有插入 我的控制台 在2017-01-30 14:40:15 0530开始为127.0.0.1发布POST"/页面"Pages计数器的处理#创建为超文本标记语言参数:{"utf8"= 新.html.erb 页面_控制器.rb

  • 问题内容: 嘿,我有一个连接两个不相关表的Junction表。两个表都有。我需要使用不同的值从每个表中选择,例如,这就是我的看法: 我见过的所有示例都使用一条语句,但是两个表具有相同的值,在这种情况下,它们不是。 问题答案: 试试这个查询:

  • 我试图在从一个表创建一个值后将其插入另一个表我有两个数据库“mem”和“location” 我想从mem表中添加主键id,并将其插入到位置表中的user_id列中。 我有一个sql查询在我的注册表单页面,自动递增'id'在mem表中,但似乎没有添加相同的值到位置表中的user_id, 有人能帮忙吗!