在mysql中通过触发器插入增加一个数字字段

r6l8ljro  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(249)

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

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 ;

我试过把更新放在一个单独的触发器里( AFTER INSERT ON versions_something ... ),但mysql抱怨它与它前面的触发器冲突。
我试过了 UPDATE 就其本身而言,使用表中的最后一个id,每次都有效,所以我不知道发生了什么。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题