2016-08-12 16 views
0

は、私は別の列の値に応じて自動インクリメントされます1つの以上の列がしたい別の列の値に応じて:列値の自動インクリメントEntity Frameworkのコア

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

があることは可能ですか?

+0

[自動インクリメントのために使うトリガ](http://stackoverflow.com/a/2406528/6680611) – cartant

答えて

0

built-in autoincrementing algorithmはこのようには機能しません。

次のIDForUserの値を計算するには、同じUserID(またはゼロ)の既存の最大値を検索し、1を追加します。 あなたのコードでこれを行うにはしたくない場合は、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; 
関連する問題