メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

現象

Microsoft SQL Server 2005 で、既存の列の値の大文字と小文字を変更するか、列の値をパディングして主キー列を更新すると、次のエラーメッセージが表示されます。

Msg 547、Level 16、State 0、Line 1Outlook UPDATE ステートメントは、参照制約 "<制約>" と競合しています。 データベースの競合が発生しました "<データベース名>"、テーブル "<テーブル名>"、列 '<列名>'。

たとえば、この問題は次のいずれかの状況で発生します。

例 1

  • 2つのテーブルを作成するには、SQL_Latin1_General_CP1_CI_AS の照合順序など、大文字と小文字を区別しない照合順序を使用します。

  • この2つのテーブル間に主キーと外部キーのリレーションシップを作成します。

  • 主キーテーブルの主キー列を更新するには、既存の列の値の大文字と小文字を変更します。

例 2

  • 2つのテーブルを作成します。

  • この2つのテーブル間に主キーと外部キーのリレーションシップを作成します。

  • ANSI_PADDING の設定がオフに設定されています。注: 既定では、ANSI_PADDING の設定は [オフ] に設定されています。

  • 主キーテーブルの主キー列を更新するには、列の値を埋め込みます。

原因

この問題は、type レベルに等しい値がバイナリレベルで異なる可能性があるために発生します。たとえば、type のレベルでは、N'a ' は N'A ' に等しい値になります。 ただし、バイナリレベルでは、N'a ' は N'A ' と等しくありません。 最適化メカニズムでは、大文字と小文字を変更する更新操作で実際の変更が行われないと誤って想定されています。 そのため、PK (FK) チェックは失敗します。

解決方法

Service pack の情報

この問題を解決するには、SQL Server 2005 の最新の service pack を入手してください。詳細については、以下の記事の番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

913089 SQL Server 2005 の最新の Service Pack を入手する方法

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。 この問題は、SQL Server 2005 Service Pack 3 で最初に修正されました。

詳細情報

ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×