MySQL:基于第三列的第二列自动增量

MySQL:基于第三列的第二列自动增量,mysql,auto-increment,Mysql,Auto Increment,我有一个MySQL表,如下所示: CREATE TABLE `tab` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `pos` INT(10) UNSIGNED NOT NULL, `parent` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; 如何为pos添加线程安全和快速自动增量,但与父值有关 例如: insert paren

我有一个MySQL表,如下所示:

CREATE TABLE `tab` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `pos` INT(10) UNSIGNED NOT NULL,
    `parent` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB;
如何为pos添加线程安全和快速自动增量,但与父值有关

例如:

insert parent 1 -> id=1 / pos=1 / parent=1
insert parent 1 -> id=2 / pos=2 / parent=1
insert parent 2 -> id=3 / pos=1 / parent=2
insert parent 2 -> id=4 / pos=2 / parent=2
insert parent 1 -> id=5 / pos=3 / parent=1

经过一番探索,我找到了一个解决方案,但这是最好的吗

线程安全? 快

我可以删除分隔符吗

DELIMITER $$
CREATE TRIGGER tab_trigger
BEFORE INSERT ON tab
FOR EACH ROW BEGIN
    SET NEW.`pos` = (SELECT IFNULL(MAX(pos), 0) + 1 FROM tab WHERE parent = NEW.parent);
END $$
DELIMITER ;

你可能需要使用触发器。我知道你找到了一个解决方案,但我认为一个订单可以解决你的问题。按上级ASC、pos ASC订购