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

MySQL で自動インクリメントを備えた 2 列の主キーを実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-08 08:59:11
オリジナル
853 人が閲覧しました

How to Implement a Two-Column Primary Key with Auto-Increment in MySQL?

MySql: 自動インクリメント機能を使用した 2 列の主キーの構成

コンテキストと問題のステートメント

複数のデータベースが同様の構造を持つシナリオデータはそれら全体で維持される必要があるため、データの整合性を保護することが重要です。この点では、2 列の主キーを使用することが有益であることがわかります。データベース ID を表す 1 つの列は、データベース固有の情報を含むテーブルへの接続を確立します。もう 1 つの列であるテーブル キーは、非一意性の属性を持っていますが、データベース ID 列によって行の区別が容易になります。

目標は、2 つの列を主キーとして結合し、同時にテーブル キーの増分を自動化することです。データベース ID 列に基づきます。

MySql のソリューション

MySql の場合、これに対処するソリューションが存在します。要件:

1. MyISAM ストレージ エンジンの使用:

MySql では、MyISAM ストレージ エンジンで、複数列インデックス内のセカンダリ列に AUTO_INCREMENT を指定できます。この特性により、式 MAX(auto_increment_column) 1 WHERE prefix=given-prefix.

2 を利用して AUTO_INCREMENT 列の値を自動的に生成できます。サンプル実装:

例として、次のスキーマを考えてみましょう:

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;
ログイン後にコピー

3.結果:

サンプル データベース ID およびその他のデータを使用してこのテーブルにデータを挿入すると、自動インクリメント動作が示されます。

INSERT INTO mytable (database_id, other_column) VALUES
    (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
ログイン後にコピー

データを取得すると、テーブル キーの自動インクリメントが明らかになります。データベース ID:

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          |
+----------+-------------+--------------+
ログイン後にコピー

に基づいて、MyISAM ストレージ エンジンを利用し、その仕組みを理解することで、複数列の主キーの下で自動インクリメントするこのアプローチにより、データの整合性とデータ管理の簡素化の両方が保証されます。

以上がMySQL で自動インクリメントを備えた 2 列の主キーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート