SQL Получить значение идентификатора и вставить в другой столбец
Я пытаюсь создать оператор 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 ответ
Решение
Ваше обновление не правильно, оно должно быть
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
пункт