すでにいくつかのコメントが言っているように、1つの解決策は新しい主キーを使用することです
たとえば(@onedaywhenの例に従って)、書籍のリストを格納するテーブルBooksが存在し、ISBNを主キーとして決定するために「使用」したとします。ただし、一部の著者は、間違ったISBNを入力するというミスを犯したため、ISBNの変更を要求しました。これには次のタスクが含まれていました。
- テーブルBooksに新しいレジストリを作成します
- 古いISBNから新しいISBNへのすべての参照をポイントします。(*)
- 最後に、テーブルBooksから古いレジストリを削除します。
(*)外部キーを使用するデータベースモデルのすべての参照を見つけるのは簡単ですが、一部のモデルにはそれがありません。
Table Books
ISBN is the primary key
NAME is a simple field.
etc.
として変更します
Table Books
InternalBookId as the primary key
ISBN as a simple field or an indexed field.
NAME is a simple field.
etc.
新しいInternalBookIdが自動数値である場合もあります。
それについての短所:
プロ
- 「主キー」を変更できます。
- 「主キー」をドロップまたはリファクタリングすることもできます。たとえば、BooksをISBN-13に変更して、古い列を削除して新しい列を作成することができます。
新しいテーブル:
Table Books
InternalBookId as the primary key
ISBN13 is a new field.
NAME is a simple field.
etc.