我有一个像这样的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
答案 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 ;