変更されたレコード値を更新する関数を定義しています。
CREATE FUNCTION update_project_status_away_from_started()
RETURNS TRIGGER AS $$
BEGIN
IF OLD.status = 'started' THEN
NEW.status = 'updating';
RETURN NEW;
END IF;
RETURN OLD;
END;
$$ language 'plpgsql';
ただし、行を更新すると、次のエラーが発生します。
ERROR: operator does not exist: projectstatus = character varying
列挙型は次のように定義されます。
CREATE TYPE projectstatus AS ENUM ('started', 'updating', 'complete');
これについての私の理解は、列挙型が文字列と比較されており、何をすべきかわからないということです。残念ながら、文字列 ('started') を列挙型にキャストする方法がわかりません。http://www.postgresql.org/docs/9.1/static/datatype-enum.htmlの postgresql ページは、あまり役に立ちません。誰でも何か考えがありますか?