MS SQL自動インクリメント非アイデンティティ列

entity-framework entity-framework-core sql-server sql-server-2008 tsql

質問

IDと呼ばれる自動増分ID /主キー列を持つテーブルがあります。

CREATE TABLE Table1(

[ID] [bigint] IDENTITY(1,1) NOT NULL,

[TextContent] [nvarchar](450) NOT NULL,

[Version] [bigint] NOT NULL)

私は[TextContent]を更新するときに、[Version]を1つ増やしたいと思います。その目的は、行が更新されるたびにインクリメントする各行のバージョンを持つことです。

単一のテーブル内でこれを行う合理的な方法はありますか?おそらく、計算された列の値やトリガーと関係があるでしょうか?

Entity Framework経由でMSSQL 2008を使用しています。

すべての情報ありがとう!

受け入れられた回答

これは、コメントで説明したように、Updateの後です。 この行のバージョンインクリメントします。

ALTER TRIGGER triggerIncrementUpdate
ON Table1
AFTER UPDATE

AS
BEGIN

UPDATE Table1 SET Version += 1 FROM Table1 INNER JOIN INSERTED As I ON Table1.ID = I.ID

END

人気のある回答

方法1

トリガを作成してみてください

CREATE TRIGGER incrementValue
ON Table1
FOR Insert
AS 
   Update Table1 
   set columnvalue = columnvalue +1 
   where id in (select id from inserted)
GO

方法2

更新コマンドの使用

以下のようにupdateコマンドを使用すると同時に、カラムの値を増やしてください

UPDATE Tab
   SET Version= Version + 1
 WHERE id = 1


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ