在多列主键上使用自动增量
维护跨数据库的数据完整性可能具有挑战性。通过利用两列作为复合主键,可以确保每行的唯一性。但是,在自动递增其中一列时,必须考虑如何管理行的唯一标识。
在 MyISAM 中使用 AUTO_INCRMENT
MyISAM 存储引擎允许您在多列索引中的非主列上指定 AUTO_INCRMENT。自动增量值计算为 MAX(auto_increment_column) 1,其中匹配给定前缀。这在将数据组织成有序组时特别有用。
用法示例:
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;
在此示例中,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');
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 | +----------+-------------+--------------+
如您所见,table_id 会针对每个唯一的database_id 自动递增。这确保了每行的唯一性以及基于database_id的有序分组。
以上是多列主键如何自动增加一列?的详细内容。更多信息请关注PHP中文网其他相关文章!