1 建立大表。
   2 创建分区继承
   3 定义Rule或者Trigger?

1 建立大表    
    CREATE TABLE student (student_id bigserial, name varchar(32), score smallint)

2 创建分区继承

  • CREATE TABLE student_qualified (CHECK (score >= 60 )) INHERITS (student) ;
  • CREATE TABLE student_nqualified (CHECK (score < 60)) INHERITS (student) ;
  •  3 定义Rule或者Trigger
    (1)创建rule

      CREATE OR REPLACE RULE insert_student_qualified 
    AS ON INSERT TO student 
     WHERE score >= 60
    DO INSTEAD

     INSERT INTO student_qualified VALUES(NEW.*);

    CREATE OR REPLACE RULE insert_student_nqualified 

    AS ON INSERT TO student 

          WHERE score < 60

          DO INSTEAD

          INSERT INTO student_nqualified VALUES(NEW.*);

    (2)创建方法及触发器

    REATE OR REPLACE FUNCTION student_insert_trigger()
    RETURNS TRIGGER AS 
    $$

          BEGIN 
          IF(NEW.score
     >= 60) THEN
          INSERT
     INTO student_qualified VALUES (NEW.*);
           ELSE
     
           INSERT
     INTO student_nqualified VALUES (NEW.*);
          END
     IF;
           RETURN
     NULL;
        END;

    $$

    LANGUAGE plpgsql ;

    //创建触发器

    REATE TRIGGER insert_student 
     BEFORE INSERT ON student
        FOR EACH row
     EXECUTE PROCEDURE student_insert_trigger() ;

     

    相关文章:

    • 2022-03-05
    • 2022-03-07
    • 2021-07-06
    • 2022-01-04
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    猜你喜欢
    • 2021-06-28
    • 2022-12-23
    • 2021-06-29
    • 2021-06-03
    • 2022-02-15
    • 2022-12-23
    相关资源
    相似解决方案