简体   繁体   English

列值自动递增,取决于另一个列值Entity Framework Core

[英]Column value autoincrement depending on another column value Entity Framework Core

I want to have one more column which will autoincrement depending on another column value: 我想再增加一列,该列将根据另一列的值自动递增:

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

Is that possible? 那可能吗?

The built-in autoincrementing algorithm does not work like this. 内置的自动递增算法无法像这样工作。

To compute the next IDForUser value, search for the largest existing value with the same UserID (or zero), and add one. 要计算下一个IDForUser值,请搜索具有相同UserID (或零)的最大现有值,然后添加一个。 If you do not want to do this in your code, you must use a trigger : 如果您不想在代码中执行此操作,则必须使用触发器

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM