我有一个PostgreSQL
函数可以删除表中的行。
可能存在我想要删除的行已被其他人删除的情况。在这种情况下,我想中止该功能并回滚它完成的所有操作。
manual并未说明如何在不进行任何删除的情况下返回DELETE
语句。
我写了这个函数:
CREATE OR REPLACE FUNCTION func1()
RETURNS integer AS
$BODY$
declare
line record;
errorint int;
for line in select * from tab where ...
LOOP
DELETE from x WHERE...
if 0 row deleted then:
errorint =1;
raise exception 'delete error';
end loop;
return 0;
exception
when raise_exception then
return errorint;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
DELETE
语句将删除仅限1行或0行。 WHERE
只提供一行。意思是说成功就是"Query returned successfully: 1 rows affected"
,而失败的时候是"Query returned successfully: 0 rows affected"
。我只是不知道如何检查它返回的内容。如果还有其他方法可以检查它也是可以接受的。
基本上我的问题是如何将if 0 row deleted then
转换为PostgreSQL
语法。