1
私は、関数内で任意の計算を行うと、それに応じて、真/偽の変数を更新する方法を把握しようとしている:plpgsql動的演算/比較演算子の計算?
DROP TABLE IF EXISTS conditions;
CREATE TABLE conditions(
id SERIAL PRIMARY KEY,
val_1 INT NOT NULL,
operator_1 TEXT,
val_2 INT,
comparison_operator TEXT NOT NULL,
val_3 INT NOT NULL,
operator_2 TEXT,
val_4 INT,
current_state BOOL,
CONSTRAINT c1 CHECK ((val_2 IS NULL AND operator_1 IS NULL) OR (val_2 IS NOT NULL AND operator_1 IS NOT NULL)),
CONSTRAINT c2 CHECK ((val_4 IS NULL AND operator_2 IS NULL) OR (val_4 IS NOT NULL AND operator_2 IS NOT NULL))
);
CREATE OR REPLACE FUNCTION do_calculation()
RETURNS TRIGGER AS $$
BEGIN
/*
UPDATE conditions
SET current_state = ...???
*/
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER calculate
AFTER INSERT OR UPDATE ON conditions
FOR EACH ROW
EXECUTE PROCEDURE do_calculation();
INSERT INTO conditions (val_1, comparison_operator, val_3) VALUES (1, '>', 2);
INSERT INTO conditions (val_1, operator_1, val_2, comparison_operator, val_3) VALUES (1, '+', 3, '>', 2);
INSERT INTO conditions (val_1, operator_1, val_2, comparison_operator, val_3, operator_2, val_4) VALUES (1, '+', 3, '=', 2, '*', 2);
UPDATE conditions SET val_1 = 3 WHERE id = 1;
SELECT * FROM conditions;
しかし、私はdo_calculation()関数内で実際の計算をどのように行うのですか?