2017-03-18 15 views
0

すべてのNULLを埋め込んだ既存の表に新しい列(column4)を作成しました。リンクされたサーバー列の既存の値をすべてのレコードに設定しようとしています。挿入される値は、正しい行に一致する必要があります。既存の値を新しい列に挿入します。

これは私が来ているように近いですが、私は現在以下のエラーを受けています。私はその列を更新しようとしていません。私はそれを参照しているだけなので、新しい値は挿入された値をどこに置くかを知っています。

INSERT INTO Server1.database.schema.table1 (Column4) 
SELECT link.column6 
FROM LinkedServer.database.schema.view as link 
INNER JOIN Server1.database.schema.table1 as local 
ON link.key = local.key 
WHERE local.key = link.key 

メッセージ515、レベル16、状態2、行212
コラム 'キー'、テーブル 'ローカル' にNULL値を挿入できません。列はNULLを許可しません。 INSERTは失敗します。 ステートメントが終了しました。

+0

あなたはいくつかの異なるデータベース製品でこれをタグ付けしました。これをしないでください。使用している製品を選択してください。それ以外の場合は、RDBMSのさまざまなフレーバーが頻繁に異なる構文を使用するため、人の時間を無駄にするだけです。Oracleを使用していないというエラーメッセージから、なぜあなたの質問の範囲に含めるのですか? – APC

答えて

1

SQLサーバーの場合、insertの代わりにupdateを使用する必要があります。

update local 
set local.Column4 = link.column6 
from LinkedServer.database.schema.view link 
    inner join Server1.database.schema.table1 local 
    on link.key = local.key 
+0

「Oracle」の場合は動作しません – Rahul

+0

@RahulエラーメッセージはSQL Serverからのものです。 – SqlZim

+0

ええ.. LOL、OPは利用可能なすべてのRDBMSをタグ付けしました。コメントはそれに特有のものです。私はあなたが解明の答えに言及すべきだと信じています – Rahul

関連する問題