假设我在卖3种产品。我有一个带有id和name的products表(因此该表将有3个条目)。我希望每个产品都有一个序列号,每个序列号彼此独立,但我不想为每个产品创建一个表,因为产品数量可能会增加。
我如何实现这一点,以便序列号自动递增每个产品?我想我需要一些枢轴表,但这需要我为每个产品制作3个枢轴表。
发布于 2014-07-02 10:51:19
出发地:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
对于MyISAM和BDB表,可以在多列索引中的辅助列上指定AUTO_INCREMENT。在这种情况下,AUTO_INCREMENT列的生成值计算为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;
INSERT INTO animals (grp,name) VALUES
('mammal','dog'),('mammal','cat'),
('bird','penguin'),('fish','lax'),('mammal','whale'),
('bird','ostrich');
SELECT * FROM animals ORDER BY grp,id;返回:
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+在这种情况下(当AUTO_INCREMENT列是多列索引的一部分时),如果删除组中具有最大AUTO_INCREMENT值的行,则重用AUTO_INCREMENT值。即使在MyISAM表中也会发生这种情况,对于这些表,通常不会重用AUTO_INCREMENT值。
https://dba.stackexchange.com/questions/69528
复制相似问题