2

Table A質問があります。 、 、Table Bおよびの 3 つのテーブルがありTable Cます。

Table Aid 列が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. テーブルAから新しく作成されたid値を他のテーブルに挿入する方法??
  2. both select 句ですべての列名を指定せずにそれを行う方法はありますか?

どんな助けでも大歓迎です。

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 に答える