让用户更改自己的帐号
一般情况之下,只允许用户更改自己的密码与邮箱。下面方法设法让用户更改自己的帐号:
首先参考表[Users]:
写一个存储过程,存储过程中有一个自定义函数udf_ExclusionAccount,请参考http://www.cnblogs.com/insus/articles/1407256.html:
代码
CREATE PROCEDURE [dbo].[usp_Users_UpdateAccount]
(
@ID tinyint,
@Account nvarchar(30)
)
AS
--限制用户不能更改为系统预定帐号
IF(([dbo].[udf_ExclusionAccount](@Account) = 1) AND (@ID != 1))
BEGIN
RAISERROR(N'此帐号:%s是系统预定帐号,无法更改!',16,1,@Account)
RETURN
END
--判断更改的帐号是否已经被使用
ELSE IF EXISTS(SELECT TOP 1 * FROM [Users] WHERE [Account]=@Account AND [UsersId]<>@ID)
BEGIN
RAISERROR(N'此帐号:%s已经存在,无法更改!',16,1,@Account)
RETURN
END
BEGIN TRANSACTION
--更新帐号
UPDATE [Users] SET [Account] = @Account WHERE [UsersId] = @ID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION
(
@ID tinyint,
@Account nvarchar(30)
)
AS
--限制用户不能更改为系统预定帐号
IF(([dbo].[udf_ExclusionAccount](@Account) = 1) AND (@ID != 1))
BEGIN
RAISERROR(N'此帐号:%s是系统预定帐号,无法更改!',16,1,@Account)
RETURN
END
--判断更改的帐号是否已经被使用
ELSE IF EXISTS(SELECT TOP 1 * FROM [Users] WHERE [Account]=@Account AND [UsersId]<>@ID)
BEGIN
RAISERROR(N'此帐号:%s已经存在,无法更改!',16,1,@Account)
RETURN
END
BEGIN TRANSACTION
--更新帐号
UPDATE [Users] SET [Account] = @Account WHERE [UsersId] = @ID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION