0

現在、PHP を介してランダムに生成された varchar 文字列をテーブルの一意の識別子として使用していますが、このサイトで調査した後、サイズが小さいため、自動インクリメントの主キー フィールドを一意の識別子として使用する方がよいようです。整数の速度差に加えて、ランダムな文字列の生成について心配する必要はありません。

ただし、私の友人は、インデックスが失われた場合、または何らかの理由でインクリメント番号がリセットされた場合にインクリメント番号が 0 に変更される可能性があるため、これを行うことについて警告しています。さらに、データベースのコピーを作成する場合。テスト用で COPY SELECT が使用されている場合、インデックスは作成されず、自動インクリメントは失われます。

これらの懸念は有効ですか?変更するだけでいいですか?:)

編集 1

自動インクリメントフィールドを主キーとして使用し、それを他のテーブルの外部キーとして使用するので、何らかの理由でメインテーブルの自動インクリメント主キーが変更された場合、他のテーブルの外部キーが無効になることが懸念されます

4

1 に答える 1

1

変更するだけです。

  • auto_increment主キーでなければなりません。これは、重複する値が許可されていないことを意味します。通常int unsigned not null auto_increment primary key、定義に使用する必要があります。負の数は必要ありません。
  • これは透過的な識別子であるため、実際の値への参照はどこにもありません。メンテナンスのために実際の値を参照すると便利な場合がありますが、データが新しい DB にコピーされた場合に値が変化することを心配する必要はありません。その列がまだ存在していない限り、必要な値をその列に設定でき ます。INSERT
于 2013-11-13T14:20:41.810 に答える