我有两列的表:
sold boolean;ID_shop int;
它存储物品是否被出售,或者它所在的商店.
我需要一个触发器,如果我将“sold”更改为true,那么它也会将ID_shop更改为NulL(如果出售则不能在商店中…)
我尝试了不同的方法,但它不起作用或在更新cmd时出错…
create or replace function pardota_masina_veikals() RETURNS trigger AS $pardota_masina$begin IF NEW.sold=true THEN update masinas SET ID_shop=null WHERE ID=NEW.ID; END IF; RETURN NEW;END;$pardota_masina$LANGUAGE plpgsql;CREATE TRIGGER pardota_masina_nevar_but_veikala AFTER INSERT OR UPDATE ON masinas FOR EACH ROW EXECUTE PROCEDURE pardota_masina_veikals();首先,如果要更改正在更新(或插入)的行的值,则需要一个before触发器
其次,您不需要“更新”表,只需将新值分配给NEW行:
create or replace function pardota_masina_veikals() RETURNS trigger AS $pardota_masina$begin IF NEW.sold=true THEN NEW.ID_shop = NulL; END IF;RETURN NEW;END;$pardota_masina$LANGUAGE plpgsql;CREATE TRIGGER pardota_masina_nevar_but_veikala BEFORE INSERT OR UPDATE ON masinas FOR EACH ROW EXECUTE PROCEDURE pardota_masina_veikals();总结
以上是内存溢出为你收集整理的postgresql – Postgres触发器功能全部内容,希望文章能够帮你解决postgresql – Postgres触发器功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)