我有一个简单的postgreSQL表
Flight (id, pilot, copilot)
我希望添加一个触发器,以避免创建具有pilot =副驾驶的记录,因为当然只有一个人可以同时执行这两项操作:D
我试过了:
CREATE FUNCTION controllaPiloti() RETURNS TRIGGER AS $$
BEGIN
IF (SELECT pilot FROM flight WHERE pilot = new.pilot AND copilot = new.pilot)
THEN RAISE EXCEPTION 'Pilot and copilot must be different!';
END IF;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER checkPiloti
BEFORE INSERT ON flight FOR EACH ROW
EXECUTE PROCEDURE controllaPiloti();
但它不起作用。
我错过了什么?
答案 0 :(得分:1)
我自己刚刚解决了这个问题,没关系。
这是正确的触发器
CREATE FUNCTION controllaPiloti() RETURNS TRIGGER AS $$
BEGIN
IF (new.comandante = new.vice)
THEN RAISE EXCEPTION 'Comandante e vice non possono coincidere!';
END IF;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER checkPiloti
BEFORE INSERT ON viaggio FOR EACH ROW
EXECUTE PROCEDURE controllaPiloti();
像魅力一样。