//注意所有查询到的值都没有没有更改之前的值。
//比如页面上有改变 shiph.stgid ,但是这里查询的时候还是旧的值,
//如果想新的值可以使用 new.stgid
//有一个问题需要保存是失败的,但是页面上也会提醒保存成功。
create or replace function fn_checkStgid()
returns trigger as
$BODY$
begin
insert into temptable values(new.stgid);
if(exists(
select *
from shiph
inner join ordb on shiph.hid=new.hid and shiph.ordbodyno=ordb.bodyno
inner join shipbajar as j on j.hid=shiph.hid
inner join formulah as f on f.formulaid=j.formulaid and f.stgid != ordb.stgid)) then
insert into temptable values('错误有误!');
return null;
else
insert into temptable values('正确');
return new;
end if;
end
$BODY$
language 'plpgsql' volatile
CREATE TRIGGER tr_shiph_checkStgid
BEFORE INSERT OR UPDATE
ON shiph
FOR EACH ROW
EXECUTE PROCEDURE fn_checkStgid();