0

最初のレコードを挿入し、新しいID(自動番号の主キー)を取得して、それをテーブルの別の列に挿入してデフォルト値として機能させるSQLステートメントを作成しようとしています。

これは私がこれまでに持っているものです:

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

これはそのままでは機能せず、手を使ってシンテックスを修正することができます

4

1 に答える 1

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 =@NewID 

複数の行でこれを行っている場合は、おそらくOUTPUT句を確認する必要があります

于 2011-06-23T15:12:15.703 に答える