MySQL:基于第三列的第二列的AUTO_INCREMENT

时间:2017-03-27 21:15:38

标签: 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;

如何添加线程安全&快速AUTO_INCREMENT为“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

1 个答案:

答案 0 :(得分:-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 ;