首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >产品序列号

产品序列号
EN

Database Administration用户
提问于 2014-07-02 10:34:02
回答 1查看 1.5K关注 0票数 1

假设我在卖3种产品。我有一个带有id和name的products表(因此该表将有3个条目)。我希望每个产品都有一个序列号,每个序列号彼此独立,但我不想为每个产品创建一个表,因为产品数量可能会增加。

我如何实现这一点,以便序列号自动递增每个产品?我想我需要一些枢轴表,但这需要我为每个产品制作3个枢轴表。

EN

回答 1

Database Administration用户

回答已采纳

发布于 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,其中前缀=给定前缀。当您想要将数据放入有序组时,这是非常有用的。

代码语言:javascript
复制
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;

返回:

代码语言:javascript
复制
+--------+----+---------+
| 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值。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/69528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档