我正在将我的 Oracle 数据库迁移到 MariaDB,但我不确定如何在我的一张表上创建自引用 ID。
本质上,如果 abelongs_to_id
没有指定,它将假定它属于自己(并且与生成的 ID 相同ON INSERT
);但是,如果belongs_to_id
已指定 a,那么它将使用它来代替。
我这样做的原因是因为我将帖子和回复存储在同一个表中。如果id
= belongs_to_id
,那么它是一个发起帖子,而如果它不同,它是对另一个帖子的回复。
我曾考虑让我的应用程序(Node JS)快速UPDATE
使用 last_insert_id - 但它看起来相当混乱,如果可能的话我想避免这种情况。
这是我在 Oracle 中使用的 - 有人知道我如何在 MariaDB 中复制它吗?
CREATE OR REPLACE TRIGGER my_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
:new.id := my_sequence.NEXTVAL;
:new.belongs_to_id := NVL(:new.belongs_to_id,:new.id);
END;
/