C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.94986 の関連記事表示

<< 0 >>
■94986  SQLサーバーで列をコピーしたい
□投稿者/ たかし -(2020/06/09(Tue) 10:12:15)

    分類:[データベース全般] 

    お世話になっております、たかしです。

    Q在庫一覧表(View)の「期末残高」列をT商品マスター(テーブル)の「期首残高」列に
    丸々コピーしたくて、以下のようなプロシージャを考えたのですが、
    「System.Data.SqlClient.SqlException- 'テーブル '' の列 '' に値 NULL を挿入できません。
    この列では NULL 値が許可されていません。INSERT は失敗します。」
    というエラーが出てしまいます。
    コピーしたいのは期末残高のみで商品コードではないのですが、何故このようなエラーが出るのでしょうか?
    どなたかよろしくお願いいたします。

    INSERT INTO T商品マスター(
    期首残高
    )
    SELECT
    期末残高
    FROM Q在庫一覧表
親記事 /過去ログ164より / 関連記事表示
削除チェック/

■94987  Re[1]: SQLサーバーで列をコピーしたい
□投稿者/ たかし -(2020/06/09(Tue) 10:21:10)
    No94986 (たかし さん) に返信
    > お世話になっております、たかしです。
    >
    > Q在庫一覧表(View)の「期末残高」列をT商品マスター(テーブル)の「期首残高」列に
    > 丸々コピーしたくて、以下のようなプロシージャを考えたのですが、
    > 「System.Data.SqlClient.SqlException- 'テーブル '' の列 '商品コード' に値 NULL を挿入できません。
    > この列では NULL 値が許可されていません。INSERT は失敗します。」
    > というエラーが出てしまいます。
    > コピーしたいのは期末残高のみで商品コードではないのですが、何故このようなエラーが出るのでしょうか?
    > どなたかよろしくお願いいたします。
    >
    > INSERT INTO T商品マスター(
    > 期首残高
    > )
    > SELECT
    > 期末残高
    > FROM Q在庫一覧表
    >
記事No.94986 のレス /過去ログ164より / 関連記事表示
削除チェック/

■94988  Re[2]: SQLサーバーで列をコピーしたい
□投稿者/ たかし -(2020/06/09(Tue) 10:26:22)
    No94987 (たかし さん) に返信
    > ■No94986 (たかし さん) に返信
    >>お世話になっております、たかしです。
    >>
    >>Q在庫一覧表(View)の「期末残高」列をT商品マスター(テーブル)の「期首残高」列に
    >>丸々コピーしたくて、以下のようなプロシージャを考えたのですが、
    >>「System.Data.SqlClient.SqlException- 'テーブル '' の列 '商品コード' に値 NULL を挿入できません。
    >>この列では NULL 値が許可されていません。INSERT は失敗します。」
    >>というエラーが出てしまいます。
    >>コピーしたいのは期末残高のみで商品コードではないのですが、何故このようなエラーが出るのでしょうか?
    >>どなたかよろしくお願いいたします。
    >>
    >> INSERT INTO T商品マスター(
    >> 期首残高
    >> )
    >>SELECT
    >>期末残高
    >>FROM Q在庫一覧表
    >>

    度々すいません、エラーの列名は'商品コード'です。
    プライマリキーですのでNULL値ではありません。
記事No.94986 のレス /過去ログ164より / 関連記事表示
削除チェック/

■94990  Re[3]: SQLサーバーで列をコピーしたい
□投稿者/ Hongliang -(2020/06/09(Tue) 10:48:54)
    > INSERT INTO T商品マスター(
    > 期首残高
    > )
    > SELECT
    > 期末残高
    > FROM Q在庫一覧表

    このクエリだと、T商品マスターの期首残高列以外の列にはすべて既定値が設定された新しい行が挿入されますが、普通に考えると商品コードなんて自動採番するものでもないでしょうしNULLとなって挿入失敗ということになるんじゃないでしょうか。
    商品コードを持った行はすでにT商品マスターにあるのであればINSERTじゃなくてUPDATEを行うことになります。
    INSERTする(T商品マスターにその商品コードを持った行がない)のであれば、少なくとも期末残高のほかに商品コードも一緒にINSERTする必要があるでしょう。
記事No.94986 のレス /過去ログ164より / 関連記事表示
削除チェック/

■94989  Re[3]: SQLサーバーで列をコピーしたい
□投稿者/ shu -(2020/06/09(Tue) 10:48:16)
    No94988 (たかし さん) に返信

    INSERTしているので
    プライマリキーの列がNullでSelectした列が期首残高に入るよう
    レコードを追加しようとしているためエラーになります。
    T商品マスターにもともとデータがあってQ在庫一覧表に商品コードが該当する
    列があるならjoinしてupdateするのがよいかと思います。
記事No.94986 のレス /過去ログ164より / 関連記事表示
削除チェック/

■94991  Re[3]: SQLサーバーで列をコピーしたい
□投稿者/ kiku -(2020/06/09(Tue) 11:05:03)
    > >> INSERT INTO T商品マスター(
    > >> 期首残高
    > >> )
    > >>SELECT
    > >>期末残高
    > >>FROM Q在庫一覧表

    上記SQL文は下記の実行後のように、nullを挿入しようとしています。

    ●実行前
    ・T商品マスター
     商品コード,期首残高,A1,A2,A3
     1,100,A1,A2,A3
     2,200,A1,A2,A3
    ・Q在庫一覧表
     商品コード,期首残高,B1,B2,B3
     1,300,B1,B2,B3
     2,400,B1,B2,B3
     3,500,B1,B2,B3
     4,600,B1,B2,B3

    ●実行後
    ・T商品マスター
     商品コード,期首残高,A1,A2,A3
     1,100,A1,A2,A3
     2,200,A1,A2,A3
     null,300,null,null,null
     null,400,null,null,null
     null,500,null,null,null
     null,600,null,null,null

記事No.94986 のレス /過去ログ164より / 関連記事表示
削除チェック/

■94992  Re[4]: SQLサーバーで列をコピーしたい
□投稿者/ たかし -(2020/06/09(Tue) 12:43:02)
    No94991 (kiku さん) に返信
    >>>> INSERT INTO T商品マスター(
    >>>> 期首残高
    >>>> )
    >>>>SELECT
    >>>>期末残高
    >>>>FROM Q在庫一覧表
    >
    > 上記SQL文は下記の実行後のように、nullを挿入しようとしています。
    >
    > ●実行前
    > ・T商品マスター
    >  商品コード,期首残高,A1,A2,A3
    >  1,100,A1,A2,A3
    >  2,200,A1,A2,A3
    > ・Q在庫一覧表
    >  商品コード,期首残高,B1,B2,B3
    >  1,300,B1,B2,B3
    >  2,400,B1,B2,B3
    >  3,500,B1,B2,B3
    >  4,600,B1,B2,B3
    >
    > ●実行後
    > ・T商品マスター
    >  商品コード,期首残高,A1,A2,A3
    >  1,100,A1,A2,A3
    >  2,200,A1,A2,A3
    >  null,300,null,null,null
    >  null,400,null,null,null
    >  null,500,null,null,null
    >  null,600,null,null,null
    >
    >

    shuさん、Hongliangさん、kikuさん、ありがとうございました。
    以下のようなコードでなんとか解決することが出来ました。

    UPDATE T商品マスター
    SET T商品マスター.期首残高 = Q在庫一覧表.期末残高
    FROM Q在庫一覧表
    WHERE Q在庫一覧表.商品コード = T商品マスター.商品コード

    また解らないことが出てきたときは、よろしくお願いいたします。

記事No.94986 のレス / END /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -