我想使用触发器对属性实现非空约束。这是我的代码:
create table mytable2(id int);
create or replace function p_fn() returns trigger as $prim_key$
begin
if (tg_op='insert') then
if (id is null) then
raise notice 'ID cannot be null';
return null;
end if;
return new;
end if;
end;
$prim_key$ language plpgsql;
create trigger prim_key
before insert on mytable2
for each row execute procedure p_fn();
但是每当我尝试插入空值时,我都会收到一条错误消息,提示“控制已到达没有返回的触发过程结束”。我尝试将“return new”语句放在内部 IF 中,但它仍然给了我同样的错误。我究竟做错了什么?