1

我有一个 IF NOT EXISTS 语句。如果它不存在,则后面是 INSERT 语句。如果存在,我需要了解什么是/可以返回,以便我可以用 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";}

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

感谢您的关注。

4

2 回答 2

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 ?

于 2012-04-24T20:31:57.443 回答
1

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

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

于 2012-04-24T20:32:23.923 回答