我想知道是否/如何可以为每个主键设置第二列自动增量:
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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)