2011-12-23 9 views
0

fixedIDという列があり、現在の値= 2です。この値を42に更新します。これを行う最善の方法は何ですか。私は可能な限り簡単にこの変更をしたいと思います。しかし、もし私がこれを行うことができます選択したインサートを行うことも素晴らしいだろう。INTのID列を更新する簡単なSQL方法

update tblFixedId 
set FixedId = (FixedId + 400) 

ここで値を変更することはできますか?

Select * INTO mynewTable from myOldertable 
+0

あなたのコードサンプルは、質問本体とオッズです。 'FixedId'を402に設定します(2であると仮定します)。42全体ではなくテーブル全体を更新したいのですが、更新するためにどのルールを使いたいのですか? – Oded

+0

'tblFixedId'、' mynewTable'、 'myOldertable'はどれですか? –

答えて

0

SQL Serverでは、ID列を更新できません。

もはやIDENTITY列として列をマークするALTER TABLE ... SWITCHを用いることであろうというDELETE ... INSERTよりも、実際のUPDATEとしてこれを行うための唯一の方法は、のために(IDENTITYとして列を再マークする再びALTER TABLE ... SWITCHUPDATEを行います最初の方法では、回避策はthis Connect Item、もう1つはhereです。

identity列がクラスタ化インデックスキーであるという一般的なシナリオでは、UpdateはおそらくINSERT ... DELETEとして実装される可能性があります。

+0

再シードはどうですか? – Oded

+0

または、目的のIDを持つ新しいレコードを挿入し、フィールドをコピーして元のレコードを削除します。もちろん、すべてのトランザクション内で。 –

+0

@Oded - それはどうですか? [私の例はこちら](http://stackoverflow.com/a/6086661/73226)のように、新しい 'identity'値を持つテーブルを作成するほうが簡単です。 –

関連する問題