如果数据已存在于数据库中,如何防止添加数据

时间:2012-09-04 12:08:57

标签: asp.net sql

我希望用户在网站上注册&如果他的电子邮件已经存在,则不应添加他的数据。

现在这是我使用的功能:

IF exists( SELECT        SU_ID, SU_Email
           FROM            SystemUser
           WHERE        (SU_Email = @email)
           )
Begin
    return 0
END
else
begin
    return -1
end

但即使select语句返回一个值,它也不会返回0&返回-1。 我究竟做错了什么 ?

4 个答案:

答案 0 :(得分:2)

试试这个

DECLARE @FOUND INT
SET @FOUND = (SELECT COUNT(*) AS F FROM SystemUser WHERE (SU_Email = @email))
IF @FOUND > 0 THEN
 RETURN 0
ELSE
 RETURN -1

答案 1 :(得分:1)

尝试插入(如果不存在)

 IF Not exists( SELECT * FROM  SystemUser  WHERE SU_Email = @email)
 Begin
     --Insert statment here
 END

答案 2 :(得分:1)

当我们编写一个函数时,我们也声明了一个返回变量,你错过了,请按照下面的代码

Create function CheckUser(@Email @Varchar(50))
RETURNS Bit
DECLARE @ans bit  -- Declare a bit variable

IF exists( SELECT        SU_ID, SU_Email
       FROM            SystemUser
       WHERE        (SU_Email = @email)
       )
    Begin
       set @ans = 1
    END
else
    Begin
       set @ans = 0
    End

RETURNS @ans

答案 3 :(得分:1)

在SQL Server数据列中将Unique定义为约束。 处理相同的异常。