\c table_name_test_db;
set dolphin.lower_case_table_names TO 0;
CREATE TABLE Test_trigger_src_tbl(id1 INT, id2 INT, id3 INT);
CREATE TABLE Test_trigger_des_tbl(id1 INT, id2 INT, id3 INT);
CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS
$$
DECLARE
BEGIN
        INSERT INTO Test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3);
        RETURN NEW;
END
$$ LANGUAGE PLPGSQL;
CREATE OR REPLACE FUNCTION tri_update_func() RETURNS TRIGGER AS
$$
DECLARE
BEGIN
        UPDATE Test_trigger_des_tbl SET id3 = NEW.id3 WHERE id1=OLD.id1;
        RETURN OLD;
END
$$ LANGUAGE PLPGSQL;
CREATE OR REPLACE FUNCTION TRI_DELETE_FUNC() RETURNS TRIGGER AS
$$
DECLARE
BEGIN
        DELETE FROM Test_trigger_des_tbl WHERE id1=OLD.id1;
        RETURN OLD;
END
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER insert_trigger
BEFORE INSERT ON Test_trigger_src_tbl
FOR EACH ROW
EXECUTE PROCEDURE tri_insert_func();
CREATE TRIGGER update_trigger
AFTER UPDATE ON Test_trigger_src_tbl  
FOR EACH ROW
EXECUTE PROCEDURE tri_update_func();
CREATE TRIGGER delete_trigger
BEFORE DELETE ON Test_trigger_src_tbl
FOR EACH ROW
EXECUTE PROCEDURE tri_delete_func();
INSERT INTO Test_trigger_src_tbl VALUES(100,200,300);
SELECT * FROM Test_trigger_src_tbl;
 id1 | id2 | id3 
-----+-----+-----
 100 | 200 | 300
(1 row)

SELECT * FROM Test_trigger_des_tbl;
 id1 | id2 | id3 
-----+-----+-----
 100 | 200 | 300
(1 row)

UPDATE Test_trigger_src_tbl SET id3=400 WHERE id1=100;
SELECT * FROM Test_trigger_src_tbl;
 id1 | id2 | id3 
-----+-----+-----
 100 | 200 | 400
(1 row)

SELECT * FROM Test_trigger_des_tbl;
 id1 | id2 | id3 
-----+-----+-----
 100 | 200 | 400
(1 row)

DELETE FROM Test_trigger_src_tbl WHERE id1=100;
SELECT * FROM Test_trigger_src_tbl;
 id1 | id2 | id3 
-----+-----+-----
(0 rows)

SELECT * FROM Test_trigger_des_tbl;
 id1 | id2 | id3 
-----+-----+-----
(0 rows)

ALTER TRIGGER delete_trigger ON Test_trigger_src_tbl RENAME TO delete_trigger_renamed;
ALTER TABLE Test_trigger_src_tbl DISABLE TRIGGER insert_trigger;
ALTER TABLE Test_trigger_src_tbl DISABLE TRIGGER ALL;
DROP TRIGGER insert_trigger ON Test_trigger_src_tbl;
DROP TRIGGER update_trigger ON Test_trigger_src_tbl;
DROP TRIGGER delete_trigger_renamed ON Test_trigger_src_tbl;