使用新的id值从另一个表复制数据

时间:2012-09-23 12:46:35

标签: sql

我有一个问题:我有3个表,Table ATable BTable C

Table A是主表,其id列使用Table BTable C进行FK键控。

我想从每个表中复制相同的数据,并将这些复制的行插入到自己的表中,其新ID为table A

我们通常做

insert into table A (id, name, age) 
   select name, age from table A

此处新行获取新ID,因为id列自动递增。

但是当我们将Table B的数据复制到Table B时,我们如何从Table A指定新的ID?这是FK键入的。

insert into table B (tab_B_Id, id, mark, subject) 
    select id, mark, subject 
    from tab B.

[id is the pk of `Table A` and FK to `Table B` and `Table C`]
  1. 如何将表A中新创建的id值插入其他表?
  2. 如果没有指定中的所有列名,我们有什么方法可以做到 两个选择子句???
  3. 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

  1. 在SQL Server中,您可以scope identity获取插入的ID。或者,您可以使用INSERT语句中的OUTPUT子句。

  2. 如果您要使用所有列,则不需要指定它们,否则您需要指定它们。请注意,明确指定列是一种很好的做法。如果添加新列,则不希望旧代码的行为有所不同。

答案 1 :(得分:0)

对于问题1,这是怎么回事:

insert into table B (tab_B_Id, mark, subject) select mark, subject from tab B

然后

insert into table B(id) where tab_B_Id="THE ID VALUE THAT YOU GENERATED EARLIER" select id from table A

我没有测试代码。可能存在一些语法错误。 我不太明白你的问题2。