SQL Получить значение идентификатора и вставить в другой столбец - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь создать оператор 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

Это не работает как есть, и я мог бы использовать руку, чтобы исправить синтаксис

1 Ответ

1 голос
/ 23 июня 2011

Ваше обновление не верно, оно должно быть

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 Clause

...