一般情况之下,只允许用户更改自己的密码与邮箱。下面方法设法让用户更改自己的帐号:
首先参考表[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