0

1対1の関係を共有する2つのテーブルがあります(実際には1対多ですが、1対1として使用します)。外部キーを持つテーブルには、外部キーがNULLに設定された既存のレコードがあります。最初のレコードごとに2番目のテーブルに1つのデフォルトレコードを追加し、新しいレコードに関連するように最初の外部キーを更新するTSQLスクリプトを記述したいですか?私がこれをどのように行うことができるか考えていますか?

新しいバージョンを公開するときに、開発データベースだけでなくライブも更新できるように、スクリプトを作成したいと思います。

ありがとう。

編集:

ここに画像の説明を入力してください

さらなる編集:

リテラルを使用してデフォルト値を挿入します。これ以上具体的にすることはできません。これは、2つのテーブル間の1対多の関係を含む非常に単純なシナリオです。

さらに編集:

私はある種のNDAの下にいます。状況の例をモックアップするために時間を費やすことができました。上記の表1のレコードを表2の各レコードに1つずつ作成してから、表1のキーを表2の関連レコードの外部キーに設定する必要があります。これはよくあることのようです。

解決策は一時テーブルを作成することだと思いますが、詳細を作成する方法がわかりません。一時テーブルを挿入し、挿入されたテーブルのIDを一時テーブルに保存する方法はありますか?

4

1 に答える 1

1

いくつかの仮定を行うと、次のコードでこれを行うことができます。

insert into t2(keyval)
    select keyval
    from t1
    where t1.t2id is null and
          t1.keyval not in (select keyval from t2)

update t1
    set t2id = t2.t2id
    from t2
    where t1.keyval = t2.keyval

仮定は次のとおりです。

  1. これが行われている間、どちらのテーブルも変更されていません。
  2. t2.t2id は ID 列であるため、ID は挿入時に自動的に割り当てられます
  3. 最初のテーブルには、一致するための ID と値の両方が含まれています
于 2012-07-05T16:05:33.547 に答える