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

MySQL でセカンダリ主キー列に自動インクリメントを実装するにはどうすればよいですか?

DDD
リリース: 2024-12-13 16:16:11
オリジナル
767 人が閲覧しました

How to Implement Auto-Increment on a Secondary Primary Key Column in MySQL?

MySQL でセカンダリ主キー列の自動インクリメントを実現する

データの整合性を維持することが重要な状況では、2 つの列を主キーとして使用することが適切な場合があります。アプローチ。ただし、一方の列にもう一方の特定の値に基づいて自動インクリメントを設定しようとすると、問題が発生する可能性があります。

MySQL ユーザーの場合、この問題に取り組む際には 2 つのオプションを考慮する必要があります。

AUTO_INCREMENT で MyISAM エンジンを使用する

MyISAM エンジンを使用するテーブルの場合、複数列インデックス内のセカンダリ列の AUTO_INCREMENT 属性。セカンダリ列の自動インクリメント値は次のように計算されます。

MAX(auto_increment_column) + 1 WHERE prefix=given-prefix
ログイン後にコピー

この手法を使用すると、プレフィックス列の値に基づいてデータを順序付きセットにグループ化できます。

例:

2 つの主キー列、database_id と 2 つを持つ mytable という名前の次のテーブルについて考えてみましょう。 table_id:

CREATE TABLE mytable (
  database_id MEDIUMINT NOT NULL,
  table_id MEDIUMINT NOT NULL AUTO_INCREMENT,
  other_column CHAR(30) NOT NULL,
  PRIMARY KEY (database_id,table_id)
) ENGINE=MyISAM;
ログイン後にコピー

mytable にデータを挿入すると、一意のデータベース ID 値ごとに table_id が自動的に増加します:

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

テーブルからデータを取得すると、行は次の順序に基づいて並べ替えられます。 Database_id 列と table_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          |
+----------+-------------+--------------+
ログイン後にコピー

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

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