У меня есть сохраненный процесс, содержащий оператор SQL, который выглядит примерно так:
CREATE PROCEDURE SaveUser
@UserName nvarchar(10),
@FirstName nvarchar(150),
@LastName nvarchar(150)
AS
BEGIN
INSERT INTO Users (UserName, FirstName, LastName)
VALUES (@UserName, @FirstName, @LastName)
SELECT SCOPE_IDENTITY()
END
Некоторые пользователи не могут войти в систему и не имеют имени пользователя; однако поле UserName имеет уникальный индекс, поэтому я хотел бы иметь возможность вставить идентификатор пользователя #, который является полем с автоматическим приращением, в качестве имени пользователя.
Кто-нибудь знает метод или переменную MS SQL Server, которые позволили бы мне сделать что-то подобное?
INSERT INTO Users (UserName, FirstName, LastName)
VALUES (ISNULL(@UserName, SCOPE_IDENTITY()),@FirstName,@LastName)
Редактировать Мое намерение сейчас состоит в том, чтобы использовать что-то вроде следующего
DECLARE @NextID int
SET @NextID = IDENT_CURRENT(Users) + IDENT_INCR(Users)
INSERT INTO Users (UserName, FirstName, LastName)
VALUES (ISNULL(@UserName, @NextID), @FirstName, @LastName)
Я просто хотел бы знать, есть ли встроенный метод, который мог бы гарантировать, что это будет согласованно.