I believe this is a bug: -- OR REPLACE present create or replace rule "mastertab_jan05_update" as on update to mastertab where (NEW.datecol < '20050101' or NEW.datecol >= '20050201') and (OLD.datecol >= '20050101' and OLD.datecol < '20050201') do instead ( -- multiple commands delete from mastertab_jan05 where id = OLD.id; insert into mastertab (id, datecol) values (OLD.id, NEW.datecol); );
=> ERROR: syntax error at end of input at character 255 -- OR REPLACE not present create rule "mastertab_jan05_update" as on update to mastertab where (NEW.datecol < '20050101' or NEW.datecol >= '20050201') and (OLD.datecol >= '20050101' and OLD.datecol < '20050201') do instead ( -- multiple commands delete from mastertab_jan05 where id = OLD.id; insert into mastertab (id, datecol) values (OLD.id, NEW.datecol); ); => Query OK, 0 rows affected (0,00 sec) -- OR REPLACE present create or replace rule "mastertab_jan05_update" as on update to mastertab where (NEW.datecol < '20050101' or NEW.datecol >= '20050201') and (OLD.datecol >= '20050101' and OLD.datecol < '20050201') do instead ( -- single command, no semicolon delete from mastertab_jan05 where id = OLD.id ); => Query OK, 0 rows affected (0,00 sec) -- OR REPLACE present create or replace rule "mastertab_jan05_update" as on update to mastertab where (NEW.datecol < '20050101' or NEW.datecol >= '20050201') and (OLD.datecol >= '20050101' and OLD.datecol < '20050201') do instead ( -- single command, semicolon present delete from mastertab_jan05 where id = OLD.id; ); => ERROR: syntax error at end of input at character 255 Ie, the "OR REPLACE" token is broken in that is doesn't work with multiple commands (semicolons?) /Mikael ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend