MySQL での結合主キーを使用した自動インクリメント
MySQL では複数の主キーを持つテーブルの作成が可能ですが、そうではありません。最初以外のプライマリ列での自動インクリメントをネイティブにサポートします。これに対処するには、特定の列に基づいて自動インクリメントを使用して結合主キーを作成する次のアプローチを検討してください。
MyISAM Engine
MyISAM テーブルの場合、次のことができます。複数列インデックス内のセカンダリ列に AUTO_INCREMENT を指定します。これは、database_id 値に基づいて table_id 列を自動インクリメントできることを意味します。
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;
これにより、対応するデータベースに基づいてテーブル ID が生成されます。 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 サイトの他の関連記事を参照してください。