一般在往数据库里插入一条新记录的时候,都要判断该记录是否已经存在.比如说一张登录信息表,用户帐号当然是要唯一的,所以在添加一条新的用户帐号时,必须先判断该表中是否已经存在该帐号了.否则.......(那就太混乱拉!)
下面就以一个用户登录表为例子写了一个在存储过程中判断用户是否存在的实现插入功能的存储过程.
ALTER
PROCEDURE
dbo.PR_UserAdd
@userName nvarchar ( 50 ), -- 用户名
@userPassword nvarchar ( 50 ) -- 密码
AS
declare @count int
SET NOCOUNT ON
-- 判断该用户名是否已经存在,若存在,则@count=1,若不存在,则@count=0
select @count = count ( * ) from [ UserInfo ] where UserName = @userName
if ( @count = 0 ) -- 如果不存在
begin
-- 向UserInfo表中插入一条记录
insert into [ UserInfo ] (UserName,UserPassword) values ( @UserName , @UserPassword );
SET NOCOUNT OFF
RETURN @@identity -- 返回刚插入的这条记录的主键UserID,因为主键ID一般都是整型自动编号的,所以可以用这种方法获得刚插入的这条记录的ID
end
else -- 如果已经存在
begin
SET NOCOUNT OFF
RETURN 0 -- 已经存在,则返回0
end
@userName nvarchar ( 50 ), -- 用户名
@userPassword nvarchar ( 50 ) -- 密码
AS
declare @count int
SET NOCOUNT ON
-- 判断该用户名是否已经存在,若存在,则@count=1,若不存在,则@count=0
select @count = count ( * ) from [ UserInfo ] where UserName = @userName
if ( @count = 0 ) -- 如果不存在
begin
-- 向UserInfo表中插入一条记录
insert into [ UserInfo ] (UserName,UserPassword) values ( @UserName , @UserPassword );
SET NOCOUNT OFF
RETURN @@identity -- 返回刚插入的这条记录的主键UserID,因为主键ID一般都是整型自动编号的,所以可以用这种方法获得刚插入的这条记录的ID
end
else -- 如果已经存在
begin
SET NOCOUNT OFF
RETURN 0 -- 已经存在,则返回0
end
经验慢慢积累,知识越来越多.
-----XXXX