私は、単純なPostgreSQLのテーブルこのトリガーはなぜ機能しませんか?
Flight (id, pilot, copilot)
を持っていると私は、もちろん1つの人は両方で行うことはできませんので、パイロット=共同パイロットを持つレコードを作成しないようにトリガーを追加したい:D
Iこれを試しました:
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();
ただし、動作しません。
私には何が欠けていますか?
'動作しません'を定義 – sagi
データベースに既に存在するデータをチェックし、現在のデータが挿入される前にデータを実行します。これはうまくいかない。 Read http://www.postgresql.org/docs/9.1/static/plpgsql-trigger.html –
が機能しないということは、パイロットとコピロットの列に同じ値を持つレコードを作成できることを意味します。また、EXISTSを削除しようとしましたが、結果はありません – NoobNe0