验证新用户名是否与预先存在的用户名不匹配

Validate that a new username doesn't match a pre-existing username

我想在我的 SQL 存储过程中实施一个旨在创建新用户的验证。我想验证新用户不能使用与另一个用户相同的用户名。这是我当前的存储过程:

ALTER PROCEDURE NewUserCreation
    @Login NVARCHAR(50), 
    @Password NVARCHAR(50), 
    @FirstName NVARCHAR(40), 
    @LastName NVARCHAR(40),
    @DOB DATE(10),
    @Email NVARCHAR(100),
    @Phone varchar(10),
    @Address NVARCHAR(250),
AS
BEGIN
    SET NOCOUNT ON

    INSERT INTO dbo.[USERS] (USERNAME, PASSWORDHASH, USER_F_NAME, USER_L_NAME, USER_DOB, USER_EMAIL)
        VALUES(@Login, HASHBYTES('SHA2_512', @Password), @FirstName, @LastName, @Email)
END

我假设我需要使用 if 语句执行某些操作,该语句获取用户在@login 中输入的值,并与 USERS table 的用户名列进行交叉检查。关于最佳方法的任何指导?

这就是我要做的

    INSERT INTO dbo.[USERS] (USERNAME, PASSWORDHASH, USER_F_NAME, USER_L_NAME, USER_DOB, USER_EMAIL)
        SELECT @Login, HASHBYTES('SHA2_512', @Password), @FirstName, @LastName, @Email
        WHERE NOT EXISTS (SELECT 1 FROM dbo.[USERS] WHERE USER_EMAIL = @Email);

    IF @@ROWCOUNT = 0 BEGIN
        THROW 51000, 'Duplicate email address not allowed', 1;
    END;