数据库
首页 > 数据库> > 非主键上的mysql自动增量

非主键上的mysql自动增量

作者:互联网

今天另一个问题:)
这次,我想知道是否/如何使每个主键的第二列自动增加:

CREATE TABLE test (
    `id` INTEGER UNSIGNED NOT NULL,
    `subId` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    `text` VARCHAR(45) NOT NULL,
    PRIMARY KEY (`id`, `subId`)
)
ENGINE = InnoDB;

不幸的是,只有当我将ID指定为主键,将subId指定为索引键时,此创建才起作用(但我需要它们同时使用,并且ID可以重复…)
示例数据(我需要什么):

1, 1
1, 2
1, 3
2, 1
2, 2
3, 1

将ID设置为主索引和subId索引的问题是subId将独立于ID递增.
如何做到这一点,甚至有可能吗?

解决方法:

我不得不处理一个类似的问题,即不自然地排序类别树.
如果您一次插入一个ID的所有行,则可以对每个subId执行以下操作:

SET @seq = 0;
INSERT INTO test
  (id,  subId,            text) VALUES
  (_id, @seq := @seq + 1, 'Some text')
;

如果您需要将一行“添加”到ID,可以使用以下命令设置@seq

SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;

当然,这将需要由应用程序而不是mySQL管理id.

您可以执行与最后一个代码块相同的操作,以获取下一个可用的ID.

标签:auto-increment,mysql
来源: https://codeday.me/bug/20191102/1992514.html