ホームページ >データベース >mysql チュートリアル >複数列の主キーの列を自動インクリメントするにはどうすればよいですか?
複数列の主キーでの自動インクリメントの使用
データベース間でデータの整合性を維持するのは困難な場合があります。 2 つの列を複合主キーとして利用することで、各行の一意性を確保できます。ただし、列の 1 つを自動インクリメントする場合は、行の一意の識別を管理する方法を考慮することが重要です。
MyISAM で AUTO_INCREMENT を使用する
MyISAM ストレージ エンジンを使用すると、次のことが可能になります。複数列インデックスの非プライマリ列に AUTO_INCREMENT を指定します。自動インクリメント値は、指定されたプレフィックスが一致する MAX(auto_increment_column) 1 として計算されます。これは、データを順序付けされたグループに編成する場合に特に便利です。
使用例:
CREATE TABLE animals ( grp ENUM('fish','mammal','bird') NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id) ) ENGINE=MyISAM;
この例では、id は grp の値に基づいて自動インクリメントされます。 .
に適用されます例:
特定の要件に合わせて、次のテーブル構造を作成できます:
CREATE TABLE mytable ( table_id MEDIUMINT NOT NULL AUTO_INCREMENT, database_id MEDIUMINT NOT NULL, other_column CHAR(30) NOT NULL, PRIMARY KEY (database_id,table_id) ) ENGINE=MyISAM;
データと結果の例:
INSERT INTO mytable (database_id, other_column) VALUES (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
SELECT * FROM mytable ORDER BY database_id,table_id; +----------+-------------+--------------+ | table_id | database_id | other_column | +----------+-------------+--------------+ | 1 | 1 | Foo | | 2 | 1 | Bar | | 3 | 1 | Bam | | 1 | 2 | Baz | | 2 | 2 | Zam | | 1 | 3 | Zoo | +----------+-------------+--------------+
ご覧のとおり、table_id は一意のデータベース ID ごとに自動的にインクリメントされます。これにより、各行の一意性と、database_id に基づいた行の順序付けされたグループ化の両方が保証されます。
以上が複数列の主キーの列を自動インクリメントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。