通过MySQL中的触发器INSERT增加数字字段

时间:2018-04-18 11:33:09

标签: mysql

我正在构建数据版本控制系统,每次将新行添加到版本表时我都需要增加版本号,但是它会递增一次然后停止:

DELIMITER |
CREATE TRIGGER trigger2 AFTER UPDATE ON something
    FOR EACH ROW
    BEGIN
        IF NEW.updated_at <> OLD.updated_at THEN
            INSERT INTO versions_something (
                `id`,
                `some_id`,
                `version`,
                `title`,
                `description`,
                `created_at`,
                `updated_at`
            ) VALUES (
                null,
                NEW.id,
                1,
                NEW.title,
                NEW.description,
                NOW(),
                NOW()
            );
        END IF;
        UPDATE
            versions_something
        SET
            version = (SELECT MAX(version)) + 1
        WHERE versions_something.id = LAST_INSERT_ID();
    END;
|
DELIMITER ;

我已尝试将UPDATE放入单独的触发器(AFTER INSERT ON versions_something ...),但MySQL抱怨它在触发之前与触发器发生冲突。

我已经使用表格中的最后一个ID自行尝试了UPDATE,每次都有效,所以我不知道发生了什么。

0 个答案:

没有答案