在维护数据完整性至关重要的情况下,使用两列作为主键可能是合适的选择方法。但是,当尝试根据其中一列中的特定值对另一列设置自动增量时,可能会出现挑战。
对于 MySQL 用户,解决此问题时需要考虑两个选项:
对于带有 MyISAM 引擎的表,您可以在辅助表上利用 AUTO_INCREMENT 属性多列索引中的列。辅助列的自动增量值计算如下:
MAX(auto_increment_column) + 1 WHERE prefix=given-prefix
此技术允许您根据前缀列中的值将数据分组为有序集合。
考虑下面名为 mytable 的表,它有两个主键列:database_id 和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 会自动为每个唯一的 database_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中文网其他相关文章!