⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rules.out

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 OUT
📖 第 1 页 / 共 5 页
字号:
select * from rtest_vview4 order by a, b; a |   b    | refcount ---+--------+---------- 2 | item 2 |        2 4 | item 4 |        1 5 | item 5 |        1 7 | item 7 |        4(4 rows)select * from rtest_vview5; a |   b    | refcount ---+--------+---------- 1 | item 1 |        0 2 | item 2 |        2 3 | item 3 |        0 4 | item 4 |        1 5 | item 5 |        1 6 | item 6 |        0 7 | item 7 |        4 8 | item 8 |        0(8 rows)insert into rtest_view3 select * from rtest_vview1 where a < 7;select * from rtest_view3; a |   b    ---+-------- 2 | item 2 4 | item 4 5 | item 5(3 rows)delete from rtest_view3;insert into rtest_view3 select * from rtest_vview2 where a != 5 and b !~ '2';select * from rtest_view3; a |   b    ---+-------- 1 | item 1 3 | item 3 7 | item 7 8 | item 8(4 rows)delete from rtest_view3;insert into rtest_view3 select * from rtest_vview3;select * from rtest_view3; a |   b    ---+-------- 2 | item 2 5 | item 5 7 | item 7(3 rows)delete from rtest_view3;insert into rtest_view4 select * from rtest_vview4 where 3 > refcount;select * from rtest_view4 order by a, b; a |   b    | c ---+--------+--- 2 | item 2 | 2 4 | item 4 | 1 5 | item 5 | 1(3 rows)delete from rtest_view4;insert into rtest_view4 select * from rtest_vview5 where a > 2 and refcount = 0;select * from rtest_view4; a |   b    | c ---+--------+--- 3 | item 3 | 0 6 | item 6 | 0 8 | item 8 | 0(3 rows)delete from rtest_view4;---- Test for computations in views--create table rtest_comp (	part	text,	unit	char(4),	size	float);create table rtest_unitfact (	unit	char(4),	factor	float);create view rtest_vcomp as 	select X.part, (X.size * Y.factor) as size_in_cm			from rtest_comp X, rtest_unitfact Y			where X.unit = Y.unit;insert into rtest_unitfact values ('m', 100.0);insert into rtest_unitfact values ('cm', 1.0);insert into rtest_unitfact values ('inch', 2.54);insert into rtest_comp values ('p1', 'm', 5.0);insert into rtest_comp values ('p2', 'm', 3.0);insert into rtest_comp values ('p3', 'cm', 5.0);insert into rtest_comp values ('p4', 'cm', 15.0);insert into rtest_comp values ('p5', 'inch', 7.0);insert into rtest_comp values ('p6', 'inch', 4.4);select * from rtest_vcomp order by part; part | size_in_cm ------+------------ p1   |        500 p2   |        300 p3   |          5 p4   |         15 p5   |      17.78 p6   |     11.176(6 rows)select * from rtest_vcomp where size_in_cm > 10.0 order by size_in_cm using >; part | size_in_cm ------+------------ p1   |        500 p2   |        300 p5   |      17.78 p4   |         15 p6   |     11.176(5 rows)---- In addition run the (slightly modified) queries from the-- programmers manual section on the rule system.--CREATE TABLE shoe_data (	shoename   char(10),      -- primary key	sh_avail   integer,       -- available # of pairs	slcolor    char(10),      -- preferred shoelace color	slminlen   float,         -- miminum shoelace length	slmaxlen   float,         -- maximum shoelace length	slunit     char(8)        -- length unit);CREATE TABLE shoelace_data (	sl_name    char(10),      -- primary key	sl_avail   integer,       -- available # of pairs	sl_color   char(10),      -- shoelace color	sl_len     float,         -- shoelace length	sl_unit    char(8)        -- length unit);CREATE TABLE unit (	un_name    char(8),       -- the primary key	un_fact    float          -- factor to transform to cm);CREATE VIEW shoe AS	SELECT sh.shoename,		   sh.sh_avail,		   sh.slcolor,		   sh.slminlen,		   sh.slminlen * un.un_fact AS slminlen_cm,		   sh.slmaxlen,		   sh.slmaxlen * un.un_fact AS slmaxlen_cm,		   sh.slunit	  FROM shoe_data sh, unit un	 WHERE sh.slunit = un.un_name;CREATE VIEW shoelace AS	SELECT s.sl_name,		   s.sl_avail,		   s.sl_color,		   s.sl_len,		   s.sl_unit,		   s.sl_len * u.un_fact AS sl_len_cm	  FROM shoelace_data s, unit u	 WHERE s.sl_unit = u.un_name;CREATE VIEW shoe_ready AS	SELECT rsh.shoename,		   rsh.sh_avail,		   rsl.sl_name,		   rsl.sl_avail,		   int4smaller(rsh.sh_avail, rsl.sl_avail) AS total_avail	  FROM shoe rsh, shoelace rsl	 WHERE rsl.sl_color = rsh.slcolor	   AND rsl.sl_len_cm >= rsh.slminlen_cm	   AND rsl.sl_len_cm <= rsh.slmaxlen_cm;INSERT INTO unit VALUES ('cm', 1.0);INSERT INTO unit VALUES ('m', 100.0);INSERT INTO unit VALUES ('inch', 2.54);INSERT INTO shoe_data VALUES ('sh1', 2, 'black', 70.0, 90.0, 'cm');INSERT INTO shoe_data VALUES ('sh2', 0, 'black', 30.0, 40.0, 'inch');INSERT INTO shoe_data VALUES ('sh3', 4, 'brown', 50.0, 65.0, 'cm');INSERT INTO shoe_data VALUES ('sh4', 3, 'brown', 40.0, 50.0, 'inch');INSERT INTO shoelace_data VALUES ('sl1', 5, 'black', 80.0, 'cm');INSERT INTO shoelace_data VALUES ('sl2', 6, 'black', 100.0, 'cm');INSERT INTO shoelace_data VALUES ('sl3', 0, 'black', 35.0 , 'inch');INSERT INTO shoelace_data VALUES ('sl4', 8, 'black', 40.0 , 'inch');INSERT INTO shoelace_data VALUES ('sl5', 4, 'brown', 1.0 , 'm');INSERT INTO shoelace_data VALUES ('sl6', 0, 'brown', 0.9 , 'm');INSERT INTO shoelace_data VALUES ('sl7', 7, 'brown', 60 , 'cm');INSERT INTO shoelace_data VALUES ('sl8', 1, 'brown', 40 , 'inch');-- SELECTs in docSELECT * FROM shoelace ORDER BY sl_name;  sl_name   | sl_avail |  sl_color  | sl_len | sl_unit  | sl_len_cm ------------+----------+------------+--------+----------+----------- sl1        |        5 | black      |     80 | cm       |        80 sl2        |        6 | black      |    100 | cm       |       100 sl3        |        0 | black      |     35 | inch     |      88.9 sl4        |        8 | black      |     40 | inch     |     101.6 sl5        |        4 | brown      |      1 | m        |       100 sl6        |        0 | brown      |    0.9 | m        |        90 sl7        |        7 | brown      |     60 | cm       |        60 sl8        |        1 | brown      |     40 | inch     |     101.6(8 rows)SELECT * FROM shoe_ready WHERE total_avail >= 2 ORDER BY 1;  shoename  | sh_avail |  sl_name   | sl_avail | total_avail ------------+----------+------------+----------+------------- sh1        |        2 | sl1        |        5 |           2 sh3        |        4 | sl7        |        7 |           4(2 rows)    CREATE TABLE shoelace_log (        sl_name    char(10),      -- shoelace changed        sl_avail   integer,       -- new available value        log_who    name,          -- who did it        log_when   timestamp      -- when    );-- Want "log_who" to be CURRENT_USER,-- but that is non-portable for the regression test-- - thomas 1999-02-21    CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data        WHERE NEW.sl_avail != OLD.sl_avail        DO INSERT INTO shoelace_log VALUES (                                        NEW.sl_name,                                        NEW.sl_avail,                                        'Al Bundy',                                        'epoch'                                    );UPDATE shoelace_data SET sl_avail = 6 WHERE  sl_name = 'sl7';SELECT * FROM shoelace_log;  sl_name   | sl_avail | log_who  |         log_when         ------------+----------+----------+-------------------------- sl7        |        6 | Al Bundy | Thu Jan 01 00:00:00 1970(1 row)    CREATE RULE shoelace_ins AS ON INSERT TO shoelace        DO INSTEAD        INSERT INTO shoelace_data VALUES (               NEW.sl_name,               NEW.sl_avail,               NEW.sl_color,               NEW.sl_len,               NEW.sl_unit);    CREATE RULE shoelace_upd AS ON UPDATE TO shoelace        DO INSTEAD        UPDATE shoelace_data SET               sl_name = NEW.sl_name,               sl_avail = NEW.sl_avail,               sl_color = NEW.sl_color,               sl_len = NEW.sl_len,               sl_unit = NEW.sl_unit         WHERE sl_name = OLD.sl_name;    CREATE RULE shoelace_del AS ON DELETE TO shoelace        DO INSTEAD        DELETE FROM shoelace_data         WHERE sl_name = OLD.sl_name;    CREATE TABLE shoelace_arrive (        arr_name    char(10),        arr_quant   integer    );    CREATE TABLE shoelace_ok (        ok_name     char(10),        ok_quant    integer    );    CREATE RULE shoelace_ok_ins AS ON INSERT TO shoelace_ok        DO INSTEAD        UPDATE shoelace SET               sl_avail = sl_avail + NEW.ok_quant         WHERE sl_name = NEW.ok_name;INSERT INTO shoelace_arrive VALUES ('sl3', 10);INSERT INTO shoelace_arrive VALUES ('sl6', 20);INSERT INTO shoelace_arrive VALUES ('sl8', 20);SELECT * FROM shoelace ORDER BY sl_name;  sl_name   | sl_avail |  sl_color  | sl_len | sl_unit  | sl_len_cm 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -