temp.sql

来自「postgresql8.3.4源码,开源数据库」· SQL 代码 · 共 154 行

SQL
154
字号
---- TEMP-- Test temp relations and indexes---- test temp table/index maskingCREATE TABLE temptest(col int);CREATE INDEX i_temptest ON temptest(col);CREATE TEMP TABLE temptest(tcol int);CREATE INDEX i_temptest ON temptest(tcol);SELECT * FROM temptest;DROP INDEX i_temptest;DROP TABLE temptest;SELECT * FROM temptest;DROP INDEX i_temptest;DROP TABLE temptest;-- test temp table selectsCREATE TABLE temptest(col int);INSERT INTO temptest VALUES (1);CREATE TEMP TABLE temptest(tcol float);INSERT INTO temptest VALUES (2.1);SELECT * FROM temptest;DROP TABLE temptest;SELECT * FROM temptest;DROP TABLE temptest;-- test temp table deletionCREATE TEMP TABLE temptest(col int);\c regressionSELECT * FROM temptest;-- Test ON COMMIT DELETE ROWSCREATE TEMP TABLE temptest(col int) ON COMMIT DELETE ROWS;BEGIN;INSERT INTO temptest VALUES (1);INSERT INTO temptest VALUES (2);SELECT * FROM temptest;COMMIT;SELECT * FROM temptest;DROP TABLE temptest;BEGIN;CREATE TEMP TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;SELECT * FROM temptest;COMMIT;SELECT * FROM temptest;DROP TABLE temptest;-- Test ON COMMIT DROPBEGIN;CREATE TEMP TABLE temptest(col int) ON COMMIT DROP;INSERT INTO temptest VALUES (1);INSERT INTO temptest VALUES (2);SELECT * FROM temptest;COMMIT;SELECT * FROM temptest;BEGIN;CREATE TEMP TABLE temptest(col) ON COMMIT DROP AS SELECT 1;SELECT * FROM temptest;COMMIT;SELECT * FROM temptest;-- ON COMMIT is only allowed for TEMPCREATE TABLE temptest(col int) ON COMMIT DELETE ROWS;CREATE TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1;-- Test foreign keysBEGIN;CREATE TEMP TABLE temptest1(col int PRIMARY KEY);CREATE TEMP TABLE temptest2(col int REFERENCES temptest1)  ON COMMIT DELETE ROWS;INSERT INTO temptest1 VALUES (1);INSERT INTO temptest2 VALUES (1);COMMIT;SELECT * FROM temptest1;SELECT * FROM temptest2;BEGIN;CREATE TEMP TABLE temptest3(col int PRIMARY KEY) ON COMMIT DELETE ROWS;CREATE TEMP TABLE temptest4(col int REFERENCES temptest3);COMMIT;-- Test manipulation of temp schema's placement in search pathcreate table public.whereami (f1 text);insert into public.whereami values ('public');create temp table whereami (f1 text);insert into whereami values ('temp');create function public.whoami() returns text  as $$select 'public'::text$$ language sql;create function pg_temp.whoami() returns text  as $$select 'temp'::text$$ language sql;-- default should have pg_temp implicitly first, but only for tablesselect * from whereami;select whoami();-- can list temp first explicitly, but it still doesn't affect functionsset search_path = pg_temp, public;select * from whereami;select whoami();-- or put it last for securityset search_path = public, pg_temp;select * from whereami;select whoami();-- you can invoke a temp function explicitly, thoughselect pg_temp.whoami();drop table public.whereami;

⌨️ 快捷键说明

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