У меня есть этот запрос, который не запускается корректно, но это показывает, что я пытаюсь достичь:Выберите идентификатор @@ при вставке?
INSERT INTO Table1
(first_name, last_name, email, password_encrypt)
VALUES
(
@first_name,@last_name,@email,
EncryptByKey(Key_GUID('CertificateName'), @password_encrypt, 1, HashBytes('SHA1', CONVERT(varbinary, Output Inserted.UserID)))
)
Я хотел бы получить последнее вставленное значение, полученное с помощью этой вставки заявления и передать его где выход Поставлен .UserID есть. Как это можно сделать?
Я могу сделать это в два этапа, выбрав @@ identity после вставки, а затем обновить столбец пароля в таблице. Но я хотел бы сделать это за один раз, если это вообще возможно.
Мое шифрование основано на этой статье от Microsoft. http://technet.microsoft.com/en-us/library/ms179331.aspx Спасибо.
О хранимых процедурах, они помогут вам –
Я бы рекомендовал использовать ** 'SCOPE_IDENTITY()' ** вместо всего остального, чтобы захватить вновь вставленное значение удостоверения личности. [См. Это сообщение в блоге для объяснения относительно WHY] (http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity -of-record /) –
Marc_s, получение идентификатора области не является моей единственной целью. Я хочу получить его во время вставки. Я попробовал scope_identity, где теперь находится Output Inserted.UserID. Это не работает. Спасибо, в любом случае. – loveprogramming