DROP TABLE counters; CREATE TABLE counters ( id integer, data_counters integer DEFAULT 0 ); DROP TABLE data; CREATE TABLE data ( id integer, counters_id integer ); /* RULES */ DROP RULE add_to_data; CREATE RULE add_to_data AS ON insert TO data DO UPDATE counters SET data_counters = data_counters + 1 WHERE id = NEW.counters_id; DROP RULE del_from_data; CREATE RULE del_from_data AS ON delete TO data DO UPDATE counters SET data_counters = data_counters - 1 WHERE id = OLD.counters_id; /* TESTS */ INSERT INTO counters (id) VALUES (1); INSERT INTO data (id,counters_id) VALUES (1,1); INSERT INTO data (id,counters_id) VALUES (2,1); INSERT INTO data (id,counters_id) VALUES (3,1); INSERT INTO data (id,counters_id) VALUES (4,1); SELECT *,'data_counters should be == 4' AS expected FROM counters; DELETE FROM data WHERE id = 1; DELETE FROM data WHERE id = 2; DELETE FROM data WHERE id = 3; DELETE FROM data WHERE id = 4; SELECT *,'data_counters should be == 0' AS expected FROM counters;