0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL Serverのレコードの更新

Last updated at Posted at 2025-11-12

概要

今更ながらですが、vb.netのLinq to SQLのコードで四苦八苦しました。
SubmitChangesしてもフィールドの値が更新されない現象です。

コード

と言うほど難しいものでもなく、Aテーブルにあるid=1のレコードのboolean型フィールドの値を反転させる、と言うものです。

Private Sub StatusChange
    Dim db = New DataContext
    Dim quary = From n In db.status Where n.id = 1 Select n

    For Each q In quary
        q.status = Not q.status
    Next

    db.SubmitChanges()
End Sub

ところが、これがまた反転されない。
こんなシンプルなソースのどこに間違いがあるんじゃ?
i++みたいなもんだぞこんなの。
自棄になって「いっそのことレコード全消しして再構築してやろうかコンニャロどーせ数レコードのことじゃろが」なんてことも考えましたが、落ち着いてGoogle先生に問い合わせてみました。

「Linq to SQL Submitchangesが効かない」

たしかこんなようなワードだったかも。
そして目についた記事がこちら。

いやー、そう、これこれ。
そして読み進めるに。
ふむ。
テーブルに主キーを設定したら更新出来たと。
なぬー?そんなこと?
確かに思い起こせば、
「数レコードしかデータが保存されないテーブルだし、フィールドも片手で足りるし、そんなん主キーとか贅沢だわー」
って考えから、主キーの設定してませんでした。

解法

記事に書いてあるのと、まったく同じことをしました。

  • SSMSでデータベースに入って該当テーブルのデザインで主キーを設定
  • Visual Studioのデザイナーで該当のテーブルを消去
  • 同じく、追加

そして動かしたら、望み通りの結果が得られました。

得られた知見

いろいろSQL Serverの知識も足りず、何故これでOKだったのかは理解していません。
ただ、主キーの設定はしたほうが良い、と言うことは理解しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?