It should only change status_changed_time if NEW.status_changed_time
is NULL or equal to OLD.status_changed_time.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
RETURNS TRIGGER AS $$
BEGIN
IF NEW.status <> OLD.status AND NOT (NEW.status = 0 AND OLD.status = 7) THEN
- NEW.status_changed_time := now();
+ IF NEW.status_changed_time IS NULL OR OLD.status_changed_time = NEW.status_changed_time THEN
+ NEW.status_changed_time := now();
+ END IF;
IF NEW.active_date IS NULL AND NEW.status IN (SELECT id FROM config.copy_status WHERE copy_active = true) THEN
NEW.active_date := now();
END IF;
--- /dev/null
+CREATE OR REPLACE FUNCTION asset.acp_status_changed()
+RETURNS TRIGGER AS $$
+BEGIN
+ IF NEW.status <> OLD.status AND NOT (NEW.status = 0 AND OLD.status = 7) THEN
+ IF NEW.status_changed_time IS NULL OR OLD.status_changed_time = NEW.status_changed_time THEN
+ NEW.status_changed_time := now();
+ END IF;
+ IF NEW.active_date IS NULL AND NEW.status IN (SELECT id FROM config.copy_status WHERE copy_active = true) THEN
+ NEW.active_date := now();
+ END IF;
+ END IF;
+ RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;