Mega Code Archive

 
Categories / PostgreSQL / Constraints
 

CREATE OR REPLACE RULE

postgres=# postgres=# CREATE TABLE measurement ( postgres(#    city_id         int not null, postgres(#    logdate         date not null, postgres(#    peaktemp        int, postgres(#    unitsales       int postgres(# ); CREATE TABLE postgres=# postgres=# CREATE TABLE measurement_yy04mm02 ( postgres(#     CHECK ( logdate >= DATE '2004-02-01' AND logdate < DATE '2004-03-01' ) postgres(# ) INHERITS (measurement); CREATE TABLE postgres=# postgres=# CREATE TABLE measurement_yy04mm03 ( postgres(#     CHECK ( logdate >= DATE '2004-03-01' AND logdate < DATE '2004-04-01' ) postgres(# ) INHERITS (measurement); CREATE TABLE postgres=# postgres=# CREATE OR REPLACE RULE measurement_current_partition AS postgres-# ON INSERT TO measurement postgres-# DO INSTEAD postgres-#    INSERT INTO measurement_yy06mm01 VALUES ( NEW.city_id, postgres(#                                              NEW.logdate, postgres(#                                              NEW.peaktemp, postgres(#                                              NEW.unitsales ); ERROR:  relation "measurement_yy06mm01" does not exist postgres=# postgres=# CREATE RULE measurement_insert_yy04mm02 AS postgres-# ON INSERT TO measurement WHERE postgres-#     ( logdate >= DATE '2004-02-01' AND logdate < DATE '2004-03-01' ) postgres-# DO INSTEAD postgres-#     INSERT INTO measurement_yy04mm02 VALUES ( NEW.city_id, postgres(#                                               NEW.logdate, postgres(#                                               NEW.peaktemp, postgres(#                                               NEW.unitsales ); CREATE RULE postgres=# postgres=# CREATE VIEW allmeasurement AS postgres-# SELECT * FROM measurement_yy04mm02 postgres-# UNION ALL postgres-# SELECT * FROM measurement_yy04mm03; CREATE VIEW postgres=# postgres=# drop view allmeasurement cascade; DROP VIEW postgres=# drop table measurement_yy04mm02 cascade; NOTICE:  drop cascades to rule measurement_insert_yy04mm02 on table measurement DROP TABLE postgres=# drop table measurement_yy04mm03 cascade; DROP TABLE postgres=# drop table measurement cascade; DROP TABLE postgres=# postgres=#