触发阻止更新查询以影响其在 postgreSQL 中的更新



我在PostgreSQL中写了一个简单的更新语句:

UPDATE <schema-name>.<table-name> 
set column1 = y 
where column2 = x;

我检查了具有相同条件的select语句返回一行,但是当我运行它时,我得到了消息:

"更新0

查询在26秒内返回成功">

有什么不对的?

编辑:

我注意到表在更新时有触发器,当我禁用这个触发器时,更新语句工作。

这是触发代码:

BEFORE DELETE OR UPDATE 
ON <schema-name>.<table-name> 
FOR EACH ROW
EXECUTE FUNCTION <schema-name>._isk_to_h_proc();

和函数代码:

CREATE OR REPLACE FUNCTION <schema-name>._isk_to_h_proc()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
declare
v_taarich date;    
begin
if (TG_OP = 'DELETE') then 
begin
v_date = now();
end;
else
v_date = NEW.edit_date;
end if;
return null;
insert into <schema-name>.<table2-name>
(
column1,
column2,
column3
)
values(
nextval('table2_sequence'),  
OLD.coulmn1,
NEW.column2,
v_date,
);
end;
$BODY$;
ALTER FUNCTION <schema-name>._isk_to_h_proc
OWNER TO postgres;

终于找到问题了。这是因为"返回"。子句中。返回null防止插入或删除。参见PostgreSQL文档

在我加入@ a_horse_with_no_name的地方检查值的兼容性。这不是PostgreSQL的问题

相关内容

  • 没有找到相关文章

最新更新