列值根据另一个列值自动递增实体框架核心

本文关键字:实体 框架 核心 另一个 | 更新日期: 2023-09-27 18:02:10

我想再增加一列,它会根据另一列的值自动增加:

ID    |   UserID   |  IDForUser
 1    |     4      |     1
 2    |     10     |     1
 3    |     4      |     2
 4    |     4      |     3
 5    |     10     |     2
 6    |     9      |     1
 7    |     9      |     2

这可能吗?

列值根据另一个列值自动递增实体框架核心

内置的自动递增算法不是这样工作的。

要计算下一个IDForUser值,请查找具有相同UserID(或零)的最大现有值,并加1。如果您不希望在代码中这样做,则必须使用触发器:

CREATE TRIGGER xxx
AFTER INSERT ON MyTable
FOR EACH ROW
WHEN NEW.IDForUser IS NULL
BEGIN
    UPDATE MyTable
    SET IDForUser = IFNULL((SELECT MAX(IDForUser)
                            FROM MyTable
                            WHERE UserID = NEW.UserID), 0) + 1
    WHERE ID = NEW.ID;
END;