使用多列自动递增主键和辅助列自动递增
在具有共享结构的数据库中维护数据完整性可以是至关重要的。作为策略的一部分,您正在考虑使用两列作为联合主键,一列是数据库标识符,另一列是表键。但是,您希望将表键设置为根据数据库标识符自动递增。
对于 MySQL,您可以根据所使用的存储引擎进行选择。如果您使用 MyISAM,则可以利用其在多列索引中的辅助列上指定 AUTO_INCREMENT 的功能。
要了解其工作原理,请考虑以下示例:
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;
在此表中,grp 和 id 列构成复合主键。 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');
查询table:
SELECT * FROM mytable ORDER BY database_id,table_id;
这将返回按database_id分组的结果,每个组的table_id值自动递增。
以上是MySQL如何实现多列自增主键?的详细内容。更多信息请关注PHP中文网其他相关文章!