2

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

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

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

我们通常做

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

在这里,新行得到一个新的 id,因为id列是自动递增的。

但是当我们将 的数据复制Table BTable 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. 如何将新创建的 id 值从表 A 插入到其他表?
  2. 有什么方法可以在不指定两个选择子句中的所有列名的情况下做到这一点???

任何帮助都感激不尽。

4

2 回答 2

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

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

于 2012-09-23T12:51:59.923 回答
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。

于 2012-09-23T13:25:02.960 回答