我正在尝试检查电子邮件地址是否已经存在,如果存在则添加1(如果存在电子邮件+ 1则为1,依此类推)。但到目前为止,我甚至无法弄清楚如何在程序中检查它是否存在。
if exists (select 1 from table where email='something') then ...
返回错误("函数或伪列' EXISTS'只能在SQL语句中使用)"。尝试了其他的东西,但那些可能不值得一提。
在我有了这个之后,我计划制作一个while循环,根据需要添加1。
答案 0 :(得分:1)
您可以在变量(已声明的变量)中选择匹配记录的数量,然后检查该变量的值:
select count(*) into l_count
from my_table
where email = 'something';
if l_count > 0 then
-- record exists
...
else
-- record does not exist
...
end if;
select ... into
总是必须返回一个记录,并且使用count
聚合函数意味着即使存在多个匹配记录也会发生这种情况。
希望能够涵盖您检查存在的具体问题。至于你的基本目标,听起来你正试图通过增加后缀来找到一个未使用的值。如果是这样,this similar question可能有所帮助。这是寻找用户名而不是电子邮件,但原则是相同的。
正如评论中所指出的,同时调用您的过程可能仍会尝试使用相同的后缀值;所以你仍然需要一个唯一的约束,并处理那个场景中违反的约束。我认为这超出了你在这里的要求。