SQL IF NOT EXISTS - 如何返回/解释它何时存在

时间:2012-04-24 20:25:52

标签: php sql-server-2005

我有一个IF NOT EXISTS声明。如果它不存在,则遵循INSERT语句。如果EXISTS我需要了解/可以返回什么,以便我可以用PHP解释它。

这样:

IF NOT EXISTS (SELECT id FROM users WHERE lname='SMITH')
INSERT INTO users (lname='SMITH')

我认为否定将不会返回任何结果,因此可以使用标准

if ($result){echo "record added";}
else {echo "duplicate - no record added";}

但这不是正在发生的事情,我不确定如何实现我所需要的 - 任何建议?

感谢您的关注。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

SET NOCOUNT ON
IF NOT EXISTS (SELECT id FROM users WHERE lname='SMITH')
  BEGIN
    INSERT INTO users (lname) VALUES('SMITH')
    SELECT 1
  END
ELSE
  SELECT 0

并检查返回的标量= 0或1?

答案 1 :(得分:1)

在这两种情况下,$result都会返回成功运行命令的响应,仅此而已。 INSERT不会产生任何行,IF语句也不会产生匹配条件。

如果要检索插入的ID,可以使用SELECT SCOPE_IDENTITY(),然后可以检查$result是否返回了一行。