1. -- sample data to test PostgreSQL INFORMATION_SCHEMA   
  2.    
  3. -- TABLE TEST   
  4. CREATE TABLE TEST (  
  5.   TEST_NAME CHAR(30) NOT NULL,  
  6.   TEST_ID INTEGER DEFAULT '0' NOT NULL,  
  7.   TEST_DATE TIMESTAMP NOT NULL  
  8. );  
  9. ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID);  
  10.    
  11. -- TABLE TEST2 with some CONSTRAINTs and an INDEX   
  12. CREATE TABLE TEST2 (  
  13.   ID INTEGER NOT NULL,  
  14.   FIELD1 INTEGER,  
  15.   FIELD2 CHAR(15),  
  16.   FIELD3 VARCHAR(50),  
  17.   FIELD4 INTEGER,  
  18.   FIELD5 INTEGER,  
  19.   ID2 INTEGER NOT NULL  
  20. );  
  21. ALTER TABLE TEST2 ADD CONSTRAINT PK_TEST2 PRIMARY KEY (ID2);  
  22. ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1);  
  23. ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4);  
  24. CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5);  
  25.    
  26. -- TABLE NUMBERS   
  27. CREATE TABLE NUMBERS (  
  28.   NUMBER INTEGER DEFAULT '0' NOT NULL,  
  29.   EN CHAR(100) NOT NULL,  
  30.   FR CHAR(100) NOT NULL  
  31. );  
  32.    
  33. -- TABLE NEWTABLE   
  34. CREATE TABLE NEWTABLE (  
  35.   ID INT DEFAULT 0 NOT NULL,  
  36.   SOMENAME VARCHAR (12),  
  37.   SOMEDATE TIMESTAMP NOT NULL  
  38. );  
  39. ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID);  
  40. CREATE SEQUENCE NEWTABLE_SEQ INCREMENT 1 START 1;  
  41.    
  42. -- VIEW on TEST   
  43. CREATE VIEW "testview"(  
  44.   TEST_NAME,  
  45.   TEST_ID,  
  46.   TEST_DATE  
  47. AS  
  48. SELECT *  
  49. FROM TEST  
  50. WHERE TEST_NAME LIKE 't%';  
  51.    
  52. -- VIEW on NUMBERS   
  53. CREATE VIEW "numbersview"(  
  54.   NUMBER,  
  55.   TRANS_EN,  
  56.   TRANS_FR  
  57. AS  
  58. SELECT *  
  59. FROM NUMBERS  
  60. WHERE NUMBER > 100;  
  61.    
  62. -- TRIGGER on NEWTABLE   
  63. CREATE FUNCTION add_stamp() RETURNS OPAQUE AS '  
  64.     BEGIN  
  65.       IF (NEW.somedate IS NULL OR NEW.somedate = 0) THEN  
  66.         NEW.somedate := CURRENT_TIMESTAMP;  
  67.         RETURN NEW;  
  68.       END IF;  
  69.     END;  
  70. ' LANGUAGE 'plpgsql';  
  71.    
  72. CREATE TRIGGER ADDCURRENTDATE  
  73. BEFORE INSERT OR UPDATE  
  74. ON newtable FOR EACH ROW  
  75.   EXECUTE PROCEDURE add_stamp();  
  76.    
  77. -- TABLEs for testing CONSTRAINTs   
  78. CREATE TABLE testconstraints (  
  79.   someid integer NOT NULL,  
  80.   somename character varying(10) NOT NULL,  
  81.   CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid)  
  82. );  
  83. CREATE TABLE testconstraints2 (  
  84.   ext_id integer NOT NULL,  
  85.   modified date,  
  86.   uniquefield character varying(10) NOT NULL,  
  87.   usraction integer NOT NULL,  
  88.   CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id)  
  89.       REFERENCES testconstraints (someid) MATCH SIMPLE  
  90.       ON UPDATE CASCADE ON DELETE CASCADE,  
  91.   CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction),  
  92.   CONSTRAINT uniquefld_idx UNIQUE (uniquefield)  
  93. );  
列出所有数据库中的表名
  1. SELECT relname  
  2.   FROM pg_class  
  3.  WHERE relname !~ '^(pg_|sql_)'  
  4.    AND relkind = 'r';  
  5. <!--   
  6. SELECT c.relname AS "Name"  
  7.   FROM pg_class c, pg_user u  
  8.  WHERE c.relowner = u.usesysid  
  9.    AND c.relkind = 'r'  
  10.    AND NOT EXISTS (  
  11.        SELECT 1  
  12.          FROM pg_views  
  13.         WHERE viewname = c.relname  
  14.        )  
  15.    AND c.relname !~ '^(pg_|sql_)'  
  16. UNION  
  17. SELECT c.relname AS "Name"  
  18.   FROM pg_class c  
  19.  WHERE c.relkind = 'r'  
  20.    AND NOT EXISTS (  
  21.        SELECT 1  
  22.          FROM pg_views  
  23.         WHERE viewname = c.relname  
  24.        )  
  25.    AND NOT EXISTS (  
  26.        SELECT 1  
  27.          FROM pg_user  
  28.         WHERE usesysid = c.relowner  
  29.        )  
  30.    AND c.relname !~ '^pg_';  
  31. -->    
  32. -- using INFORMATION_SCHEMA:   
  33.    
  34. SELECT table_name  
  35.   FROM information_schema.tables  
  36.  WHERE table_type = 'BASE TABLE'  
  37.    AND table_schema NOT IN  
  38.        ('pg_catalog''information_schema');  

相关文章:

  • 2022-01-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
  • 2022-12-23
猜你喜欢
  • 2022-01-07
  • 2021-08-31
  • 2022-12-23
  • 2021-06-04
  • 2022-02-19
  • 2022-02-08
  • 2021-11-10
相关资源
相似解决方案