PostgreSQL/Constraints/Create Rule

Материал из SQL эксперт
Перейти к: навигация, поиск

CREATE OR REPLACE RULE

   <source lang="sql">

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=#

      </source>