1

テーブル「テンダー」を更新しようとしています。

次の列があります。

  • 要求番号(rq_no)
  • 募集年(rq_year)
  • 入札番号(te_no)
  • te_date
  • 締切日
  • 入札状況(te_status)
  • te_year

以下のコードを試しました:

update tender 
set te_status='D'
where rq_no like 'Q052401C' AND te_year like '2012' and te_no like 'n0066'

in の代わりに他の文字を配置すると'D'te_status「D」を除いて更新は成功します。

set te_status='S'

私が走るとき

SELECT * FROM TENDER
WHERE
    rq_no LIKE 'Q052401C' AND te_year LIKE '2012' AND te_no LIKE 'n0066'

、単一の行を返します。

次のエラーが表示されません。

メッセージ 2627、レベル 14、状態 1、行 1 PRIMARY KEY 制約 'PK_tender' の違反。オブジェクト 'dbo.tender' に重複するキーを挿入できません。重複値は (N0066, Q052401C, D, 2012) ステートメントは終了しました。

これらすべてはどういう意味ですか?

4

1 に答える 1

2

これは、表示された値に関連するフィールド (つまり (N0066, Q052401C, D, 2012)) で構成されるテーブルに主キーが定義されていることを意味し、行の te-status フィールドを D に変更すると、更新している場合、これにより、すでに存在する主キーが生成されます。

使用する DB によっては、主キー フィールドを UPDATE できない場合があります。古い行を DELETE し、変更された行を (新しいキーで) INSERT する必要があります。

于 2013-03-14T05:46:20.540 に答える