如何将唯一更新的行移动到 hist_table postgres?
How to move the only updated row to the hist_table postgres?
我创建了下一个触发器,以便在更新或插入时将数据从主 table 移动到历史 table。
CREATE OR REPLACE FUNCTION process_employee_hist() RETURNS TRIGGER AS $employee_hist$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO employee_hist SELECT 'U', now(), user, NEW.*;
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO employee_hist SELECT 'I', now(), user, NEW.*;
RETURN NEW;
END IF;
RETURN NULL;
END;
$employee_hist$ LANGUAGE plpgsql;
CREATE TRIGGER employee_hist
AFTER INSERT OR UPDATE ON employee
FOR EACH ROW EXECUTE PROCEDURE process_employee_hist();
此触发器将所有数据从主 table 移动到历史。
我只需要将更新的移动到历史 table.
尝试:
CREATE OR REPLACE FUNCTION process_employee_hist() RETURNS TRIGGER AS $employee_hist$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO employee_hist SELECT 'U', now(), user, NEW.*;
RETURN NEW;
END IF;
RETURN NULL;
END;
$employee_hist$ LANGUAGE plpgsql;
CREATE TRIGGER employee_hist
AFTER UPDATE ON employee
FOR EACH ROW EXECUTE PROCEDURE process_employee_hist();
我创建了下一个触发器,以便在更新或插入时将数据从主 table 移动到历史 table。
CREATE OR REPLACE FUNCTION process_employee_hist() RETURNS TRIGGER AS $employee_hist$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO employee_hist SELECT 'U', now(), user, NEW.*;
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO employee_hist SELECT 'I', now(), user, NEW.*;
RETURN NEW;
END IF;
RETURN NULL;
END;
$employee_hist$ LANGUAGE plpgsql;
CREATE TRIGGER employee_hist
AFTER INSERT OR UPDATE ON employee
FOR EACH ROW EXECUTE PROCEDURE process_employee_hist();
此触发器将所有数据从主 table 移动到历史。 我只需要将更新的移动到历史 table.
尝试:
CREATE OR REPLACE FUNCTION process_employee_hist() RETURNS TRIGGER AS $employee_hist$
BEGIN
IF (TG_OP = 'UPDATE') THEN
INSERT INTO employee_hist SELECT 'U', now(), user, NEW.*;
RETURN NEW;
END IF;
RETURN NULL;
END;
$employee_hist$ LANGUAGE plpgsql;
CREATE TRIGGER employee_hist
AFTER UPDATE ON employee
FOR EACH ROW EXECUTE PROCEDURE process_employee_hist();