2000-01-05 18:31:08 +01:00
|
|
|
--
|
|
|
|
-- CREATE_VIEW
|
|
|
|
-- Virtual class definitions
|
|
|
|
-- (this also tests the query rewrite system)
|
|
|
|
--
|
|
|
|
CREATE VIEW street AS
|
|
|
|
SELECT r.name, r.thepath, c.cname AS cname
|
2000-06-10 07:19:26 +02:00
|
|
|
FROM ONLY road r, real_city c
|
1997-04-06 08:07:13 +02:00
|
|
|
WHERE c.outline ## r.thepath;
|
2000-01-05 18:31:08 +01:00
|
|
|
CREATE VIEW iexit AS
|
|
|
|
SELECT ih.name, ih.thepath,
|
1997-04-06 08:07:13 +02:00
|
|
|
interpt_pp(ih.thepath, r.thepath) AS exit
|
|
|
|
FROM ihighway ih, ramp r
|
|
|
|
WHERE ih.thepath ## r.thepath;
|
2000-01-05 18:31:08 +01:00
|
|
|
CREATE VIEW toyemp AS
|
1997-04-06 08:07:13 +02:00
|
|
|
SELECT name, age, location, 12*salary AS annualsal
|
|
|
|
FROM emp;
|
2002-09-02 04:13:02 +02:00
|
|
|
--
|
|
|
|
-- CREATE OR REPLACE VIEW
|
|
|
|
--
|
|
|
|
CREATE TABLE viewtest_tbl (a int, b int);
|
|
|
|
COPY viewtest_tbl FROM stdin;
|
|
|
|
CREATE OR REPLACE VIEW viewtest AS
|
|
|
|
SELECT * FROM viewtest_tbl;
|
|
|
|
CREATE OR REPLACE VIEW viewtest AS
|
|
|
|
SELECT * FROM viewtest_tbl WHERE a > 10;
|
|
|
|
SELECT * FROM viewtest;
|
|
|
|
a | b
|
|
|
|
----+----
|
|
|
|
15 | 20
|
|
|
|
20 | 25
|
|
|
|
(2 rows)
|
|
|
|
|
|
|
|
CREATE OR REPLACE VIEW viewtest AS
|
|
|
|
SELECT a, b FROM viewtest_tbl WHERE a > 5 ORDER BY b DESC;
|
|
|
|
SELECT * FROM viewtest;
|
|
|
|
a | b
|
|
|
|
----+----
|
|
|
|
20 | 25
|
|
|
|
15 | 20
|
|
|
|
10 | 15
|
|
|
|
(3 rows)
|
|
|
|
|
|
|
|
-- should fail
|
|
|
|
CREATE OR REPLACE VIEW viewtest AS
|
|
|
|
SELECT a FROM viewtest_tbl WHERE a <> 20;
|
|
|
|
ERROR: Cannot change column set of existing view viewtest
|
|
|
|
-- should fail
|
|
|
|
CREATE OR REPLACE VIEW viewtest AS
|
|
|
|
SELECT 1, * FROM viewtest_tbl;
|
|
|
|
ERROR: Cannot change column set of existing view viewtest
|
|
|
|
-- should fail
|
|
|
|
CREATE OR REPLACE VIEW viewtest AS
|
|
|
|
SELECT a, b::numeric FROM viewtest_tbl;
|
|
|
|
ERROR: Cannot change column set of existing view viewtest
|
|
|
|
DROP VIEW viewtest;
|
|
|
|
DROP TABLE viewtest_tbl;
|