add reporter.materialized_simple_record to the base schema
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 26 Apr 2008 16:13:13 +0000 (16:13 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 26 Apr 2008 16:13:13 +0000 (16:13 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@9456 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/sql/Pg/reporter-schema.sql

index 30b3bd0..74662ba 100644 (file)
@@ -154,6 +154,26 @@ SELECT     r.id,
   WHERE        r.deleted IS FALSE
   GROUP BY 1,2,3,4,5,6,8,9;
 
+CREATE TABLE reporter.materialized_simple_record AS SELECT * FROM reporter.simple_record WHERE 1=0;
+ALTER TABLE reporter.materialized_simple_record ADD PRIMARY KEY (id);
+
+CREATE OR REPLACE FUNCTION reporter.simple_rec_sync () RETURNS TRIGGER AS $$
+BEGIN
+    IF TG_OP IN ('UPDATE','DELETE') THEN
+        DELETE FROM reporter.materialized_simple_record WHERE id = OLD.record;
+    END IF;
+
+    IF TG_OP IN ('INSERT','UPDATE') AND NOT NEW.deleted THEN
+        INSERT INTO reporter.materialized_simple_record SELECT * FROM reporter.simple_record WHERE id = NEW.record;
+    END IF;
+
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE TRIGGER zzz_update_materialized_simple_record_tgr
+    AFTER INSERT OR UPDATE OR DELETE ON metabib.full_rec
+    FOR EACH ROW EXECUTE PROCEDURE reporter.simple_rec_sync();
+
 CREATE OR REPLACE VIEW reporter.demographic AS
 SELECT u.id,
        u.dob,