让用户更改自己邮箱
您的程序,邮箱也可以当作一个唯一值,每人只能注册一次。在让用户更改自己邮箱前,得判断邮箱是否已经被人注册。
请参考下面存储过程:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
CREATE PROCEDURE [dbo].[usp_Users_UpdateEmail]
(
@ID tinyint,
@Email nvarchar(150)
)
AS
--判断邮箱地址是否存在
IF EXISTS(SELECT TOP 1 * FROM [Users] WHERE [Email] = @Email AND [Email] <> '' AND [Email] IS NOT NULL AND [UsersId] <> @ID)
BEGIN
--如果存在,提示给用户。
RAISERROR(N'此邮箱:%s已经存在,无法更新!',16,1,@Email)
RETURN
END
BEGIN TRANSACTION
DECLARE @err int
--更新邮箱
UPDATE [Users] SET [Email] = @Email WHERE [UsersId] = @ID
SET @err = @@ERROR
IF @err <> 0
BEGIN
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION
(
@ID tinyint,
@Email nvarchar(150)
)
AS
--判断邮箱地址是否存在
IF EXISTS(SELECT TOP 1 * FROM [Users] WHERE [Email] = @Email AND [Email] <> '' AND [Email] IS NOT NULL AND [UsersId] <> @ID)
BEGIN
--如果存在,提示给用户。
RAISERROR(N'此邮箱:%s已经存在,无法更新!',16,1,@Email)
RETURN
END
BEGIN TRANSACTION
DECLARE @err int
--更新邮箱
UPDATE [Users] SET [Email] = @Email WHERE [UsersId] = @ID
SET @err = @@ERROR
IF @err <> 0
BEGIN
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION