2017-11-23 23 views
0

は、私は上記のクエリを実行すると、トークンの列のための私の結果は "になりますキャスト- アイデンティティ

CREATE TABLE test 
(
    num INT IDENTITY(1, 1), 
    Token AS 'TK_' + CAST(num VARCHAR(10)), 
    name VARCHAR(100) 
) 

INSERT INTO test VALUES ('data') 

で作成された列を更新する方法はありますtk_1 "となる。

「トークン」列の値を手動で更新/挿入することはできますか?

+4

DDLの列トークンは、計算列です。列[num]の値に基づいてその値を更新することはできません。列[num]の値を変更すると、列トークンの値が変更されます。しかし、IDなので、私はそれをお勧めしません。おそらく、あなたが探しているものはDEFAULT値ですか? – Larnu

+1

計算列は、列がPERSISTEDとマークされていない限り、テーブルに物理的に格納されていない仮想列です。 –

+0

ありがとうLarnu ..私のロジックは、同じトークンIDの場合、新しい名前を受け取った場合、私のレコードは同じtokenIdで挿入されなければならないということです。 – Priyaa

答えて

1

計算列は読み取り専用で、IDENTITYの値は更新できません。計算カラムでは、挿入時に間接的に値IDENTITY_INSERTを使用して制御しますが、それはIDENTITYを使用する目的に反します。

挿入後に値を更新する場合は、通常のvarchar(13)列にして、挿入トリガーに初期値を割り当てます。これにより、最初の挿入後に値を別のものに更新することができます。

関連する問題