PostgreSQL create rule ルール

PostgreSQL において RULE の作成も可能だ。しかし、ルール作成には命名規則など制限があるので下記を参照 してほしい。

create rule

テーブル構成が同一である必要がある。

  \c test "TEST1"
  create table tb_ruletest
  (
  id integer,
  name varchar(255),
  testid integer
  )
  ;
  insert into tb_ruletest values (1,'PreExecute',10);
  insert into tb_ruletest values (2,'SecondExecute',11);

  CREATE RULE ru_test_exe AS ON SELECT TO tb_ruletest DO INSTEAD
    SELECT * FROM tb_exetest;

  ERROR:  SELECT rule's target list has too few entries
  ★同一のテーブル構成でないと上記エラーが発生することを確認

命名規則にも制限がある。

  drop table tb_ruletest;
  create table tb_ruletest
  (
  id integer,
  name varchar(255)
  )
  ;
  select * from tb_ruletest;
  CREATE RULE "_RETtbruletest" AS ON SELECT TO tb_ruletest
    DO INSTEAD SELECT * FROM tb_exetest;

  ERROR:  view rule for "tb_ruletest" must be named "_RETURN"
  ★命名規則にも制限があることを確認。

作成に成功。

  CREATE RULE "_RETURN" AS ON SELECT TO tb_ruletest
    DO INSTEAD SELECT * FROM tb_exetest;
  CREATE RULE

  select * from tb_ruletest;
  test=# select * from tb_ruletest;
   id |     name
  ----+---------------
    1 | PreExecute
    2 | SecondExecute
  (2 rows)

  test=> \d
                               List of relations
     Schema |                 Name                 |   Type   | Owner
    --------+--------------------------------------+----------+--------
     public | tb_exetest                           | table    | TEST1
     public | tb_ruletest                          | view     | TEST1
  ★view になることを確認

ご訪問頂き有難う御座います。 当サイトを効率良く使うためにまずは FrontPage を見て下さい。 検索方法、一覧表示などの各情報を纏めています。
当サイトの説明 → Frontpage