プライマリ・キーなしmysqlテーブル作成プライマリ・キー
1152 ワード
これは筆者が実際の仕事の過程で出会った問題である.背景:いくつかの理由で、以前のデータベースのテーブルにプライマリ・キーがなかったため、プライマリ・ライブラリが一括削除と更新を実行すると、スタンバイ・ライブラリがプライマリ・ライブラリに追いつかないことがあります.
では、以前に残ったテーブルではプライマリ・キーを再確立する必要がありますが、ここではプライマリ・キーとしてフィールドの組合せを選択できないテーブルが発生する可能性があります.では、この時どうすればいいですか.
一般的には、まず、データ・テーブルがパーティション・テーブルであるかどうかを考慮する必要があります.
パーティション・テーブルまたは非パーティション・テーブルの表示方法:
構文:
この構文では、テーブル作成文が表示されます.テーブル作成文では、パーティション・テーブルであるかどうか、パーティション・フィールドであるかどうかを直感的に見ることができます.
では、元の問題に戻ります.どのようにして構築されたデータテーブルにプライマリ・キーを確立しますか?ここでは、パーティション・テーブルと非パーティション・テーブルの2つに分けられます.
パーティション表のパーティションフィールドはプライマリ・キーに含める必要があるため
1非パーティション表
新しいプライマリ・キーは
構文:
2パーティション表
新しいプライマリ・キーは
構文:データベース・テーブルが
では、以前に残ったテーブルではプライマリ・キーを再確立する必要がありますが、ここではプライマリ・キーとしてフィールドの組合せを選択できないテーブルが発生する可能性があります.では、この時どうすればいいですか.
一般的には、まず、データ・テーブルがパーティション・テーブルであるかどうかを考慮する必要があります.
パーティション・テーブルまたは非パーティション・テーブルの表示方法:
構文:
SHOW CREATE TABLE ;
この構文では、テーブル作成文が表示されます.テーブル作成文では、パーティション・テーブルであるかどうか、パーティション・フィールドであるかどうかを直感的に見ることができます.
では、元の問題に戻ります.どのようにして構築されたデータテーブルにプライマリ・キーを確立しますか?ここでは、パーティション・テーブルと非パーティション・テーブルの2つに分けられます.
パーティション表のパーティションフィールドはプライマリ・キーに含める必要があるため
1非パーティション表
新しいプライマリ・キーは
id
から増加しました.構文:
test_table
列のデータベース・テーブルalter table test_table add id BIGINT(30);
alter table test_table change id id BIGINT(30) not null AUTO_INCREMENT PRIMARY KEY;
2パーティション表
新しいプライマリ・キーは
id
から増加しました.構文:データベース・テーブルが
partition_table
の列で、パーティション・テーブルのパーティション・フィールドがDay
です.alter table partition_table add id BIGINT(30) not null auto_increment ,add primary key(id,`Day`);