我有一个问题:我有3个表,Table A
,Table B
和Table C
。
Table A
是主表,其id列使用Table B
和Table 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`]
非常感谢任何帮助。
答案 0 :(得分:1)
在SQL Server中,您可以scope identity
获取插入的ID。或者,您可以使用INSERT
语句中的OUTPUT
子句。
如果您要使用所有列,则不需要指定它们,否则您需要指定它们。请注意,明确指定列是一种很好的做法。如果添加新列,则不希望旧代码的行为有所不同。
答案 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。