PostgreSQL/Constraints/Create Rule — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 13:45, 26 мая 2010
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=#