2011-06-23 23 views
0

initalレコードを挿入し、新しいID(自律型の主キー)を取得し、それをテーブルの別の列に挿入してaとなるSQL文を作成しようとしています。デフリュート値。SQL ID値を取得して別の列に挿入する

これは私がこれまでにしたものである:あるとして

INSERT INTO users (first_name, last_name, email, password, shot, year, campus, subject, 

qual_level, job_title, blurb, presentions, offers, moderated, version_current, 

version_replace, salt, loggable) VALUES (@sfirst_name, @slast_name, @semail, @spassword, 

@sshot, @syear, @scampus, @ssubject, @squal_level, @sjob_title, @sblurb, @spresentions, 

@soffers, @smoderated, @scurrent_version, @sversion_replace, @ssalt, 1) SELECT 

SCOPE_IDENTITY() as NewId UPDATE users (version_replace) VALUES (NewId) WHERE id = NewId 

これが動作していないと私はシンテックスを修正するために手を使用することができますあなたのアップデートは適切ではない

答えて

1

それは

する必要があります
UPDATE 
    users 
SET 
    version_replace = SCOPE_IDENTITY() 

WHERE id = SCOPE_IDENTITY() 

これは、このステートメント

SELECT SCOPE_IDENTITY() as NewId理由 は、あなたが複数の行でこれをやっていた場合、あなたはおそらく見てみたいあなたもNEWID

DECLARE @NewID int 
SET @NewId = SCOPE_IDENTITY() 

UPDATE 
    users 
SET 
    version_replace = @NewID 
WHERE id [email protected] 

を格納する変数を使用することができますしたい場合は、以下の文

に与える影響はありませんOUTPUT Clause

+0

これで、NewId(varchar)をintに変換する際にエラーが発生しました。どちらもintとして格納されるので、これは奇妙です。 SQL文のデータ型を変換できますか? – YsoL8

+0

@ Ysol8。はい、 'CAST'と' CONVERT'ですることができますが、これは正しいとは言えません。私はあなたが誤って[NewID](http://msdn.microsoft.com/en-us/library/ms190348.aspx)GUIDを返す関数を使用していると思います –

+0

ありがとう - 魅力的なように動作します。私は複雑なSQLを学ばなければならないと思います。時間を節約するようだ。 – YsoL8

関連する問題