私はテーブルを持っています。 3つの列が主キーの組み合わせを作成するという点で5つの列を持ちます。oracleのプライマリキーを更新
テーブル(コーラ、COLB、COLC、風邪、コール)
iが主キーグループ内の列のいずれかを更新します。どうやってするか?
その与え主キー制約エラー。
私はテーブルを持っています。 3つの列が主キーの組み合わせを作成するという点で5つの列を持ちます。oracleのプライマリキーを更新
テーブル(コーラ、COLB、COLC、風邪、コール)
iが主キーグループ内の列のいずれかを更新します。どうやってするか?
その与え主キー制約エラー。
あなたの変更が再あなたの主キーにリンクされている制約を有効にする無効にする必要があります。 (ユニークな、null以外、等...)
はあなたが本当にこれらの3つの列の上に一意性を維持する必要がある場合は、あなたを構成する3つの列に一意制約を定義し、このwebsite
を見てみましょう現在のPKを定義し、次に新しい代理主キー列を定義します。
なぜですか?主キーは単なる候補キーです。鍵を適用するために使用する一意性制約に違いはありません。サロゲートの追加については、どのように使用するかによって異なります。それのためだけにサロゲートを追加する点はありません。安定性(「不変性」ではない)は、どのキーにとっても有用な特性ですが、絶対的な要件ではありません。サロゲートキーでさえも更新する必要があります。 – sqlvogel
あなたは例外的な状況(例えばデータ移行、)以外のプライマリキーを更新した場合は、その後、私は設計に問題があることをお勧め:http://stackoverflow.com/questions/2499246/how-更新するプライマリキー/ 2499507#2499507 – davek
私は同意しません。あなたがそれをしたいと思う理由があります。しかし、いずれの場合でも、あなたの提案された解決策は実用的な違いはありません。 PRIMARY KEY制約によって強制される制約を更新することは、UNIQUEキー制約によって強制されるキーを更新することとまったく同じです。あなたが実際に*外部キー*について何か言いたいのであれば、それを明確にすることができたと思います。複合キーを参照する外部キーはなく、更新が必要かどうかは要件によって異なります。あなたの答えはまったく助けにならないと思います。 – sqlvogel
は、念のためにあなたもreferncingデータを変更する必要があります。 MS-SQL-Serverとは対照的に、更新時カスケードには外部キーの制約はありません。How to create a Foreign Key with “ON UPDATE CASCADE” on Oracle?を参照してください。私は、プライマリ・テーブルに新しい行を挿入し、新しい行を参照するために参照テーブルを更新し、最終的には元のプライマリ行を削除ものより
。
なぜあなたは主キーを更新していますか?それは不変でなければならない。 – davek
が必要です。助けてください –
参照データを変更しないでください。 –