非主键上的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