ホームページ >データベース >mysql チュートリアル >複数列の主キーの列を自動インクリメントするにはどうすればよいですか?

複数列の主キーの列を自動インクリメントするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-13 08:11:10717ブラウズ

How Can I Auto-Increment a Column in a Multi-Column Primary Key?

複数列の主キーでの自動インクリメントの使用

データベース間でデータの整合性を維持するのは困難な場合があります。 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。