验证新用户名是否与预先存在的用户名不匹配
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;
我想在我的 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;