Во-первых, ваше поле имени пользователя должно иметь уникальный индекс. Если вы этого не сделаете, то ваши данные подвергаются риску, когда кто-то обновляет информацию, не используя ваше небольшое заявление об обновлении. Текущие предложения по коду не дают вам пример того, как обрабатывать настройку имени пользователя, если используется существующее, что вы хотите сделать? Это должно быть частью вашего процесса. Пользователю нужно имя пользователя.
просто чтобы показать здесь, это один из способов обрабатывать увеличение имени пользователя, пока вы не получите имя, которое не существует. Этот пример - вставка, а не обновление, но я думаю, что вы можете использовать его в качестве отправной точки. Используя этот метод (и это для одной записи за один раз), никто не попадает в систему с повторяющимся именем пользователя, и ошибки не выдаются, если существует точное совпадение, он просто переходит к следующему поиску. 1003 *
CREATE PROC [dbo].[ins_MyUserTable]
(
@userID int,
@Login varchar(255)
)
As
DECLARE
@ValidateUserName varchar(50),
@NewUserName varchar(50),
@CheckUserName varchar(50),
@Holding int
-- Get User Name (first letter of first name + last name)
SELECT @NewUserName = @Login
SET @Holding = 0
-- Examine User Name (must be unique)
SELECT @ValidateUserName = 1
WHILE @ValidateUserName = 1
BEGIN
-- Check for Login
SELECT @CheckUserName = (SELECT TOP 1 login FROM MyUserTable WHERE login = @NewUserName)
IF @CheckUserName = @NewUserName
BEGIN
SELECT @Holding = @Holding + 1
SELECT @NewUserName = @Login + Convert(varchar(2), @Holding)
END
ELSE
BEGIN
SELECT @ValidateUserName = 0
END
END
-- Insert into MyUserTable
INSERT INTO MyUserTable
([user_id], login)
VALUES
(@userID, @NewUserName)