PostgreSQL において更新可能なビューを実装する方法

PostgreSQLでは、以下の手順で更新可能なビューを実装できます。

  1. ビューに表示および変更したい列を含む基本テーブルを作成します。例えば、「employees」というテーブルを作成し、「employee_id」、「first_name」、「last_name」などの列を含めることができます。
CREATE TABLE employees (
  employee_id SERIAL PRIMARY KEY,
  first_name VARCHAR(50),
  last_name VARCHAR(50)
);
  1. ビューを作成する: 次にビューを作成でき、作成済のテーブルを基盤とし、選択した列をニーズに合わせて結合します。たとえば、「employees_view」と呼ばれるビューを作成し、「first_name」および「last_name」の列のみを含めます。
CREATE VIEW employees_view AS
SELECT first_name, last_name
FROM employees;
  1. トリガー関数の作成:ビューを更新可能にするため、ビューの更新操作を処理するトリガー関数を設定する必要があります。トリガー関数は、通常 PL/pgSQL 言語を使用して作成されます。ビューの更新操作を、基となるテーブルに適用するトリガー関数の例は次のとおりです。
CREATE OR REPLACE FUNCTION employees_view_update()
RETURNS TRIGGER AS $$
BEGIN
  IF TG_OP = 'INSERT' THEN
    INSERT INTO employees (first_name, last_name)
    VALUES (NEW.first_name, NEW.last_name);
    RETURN NEW;
  ELSIF TG_OP = 'UPDATE' THEN
    UPDATE employees
    SET first_name = NEW.first_name,
        last_name = NEW.last_name
    WHERE employee_id = OLD.employee_id;
    RETURN NEW;
  ELSIF TG_OP = 'DELETE' THEN
    DELETE FROM employees
    WHERE employee_id = OLD.employee_id;
    RETURN OLD;
  END IF;
END;
$$ LANGUAGE plpgsql;
  1. トリガーの作成: 最後に、トリガー関数が呼び出されるビューに更新操作が行われると、トリガーを作成する必要があります。以下にトリガーの作成例のコードを示します。
CREATE TRIGGER employees_view_trigger
INSTEAD OF INSERT OR UPDATE OR DELETE ON employees_view
FOR EACH ROW
EXECUTE FUNCTION employees_view_update();

ビューを使用して更新操作を行うことができるようになりました。たとえば、以下の文を実行して新しいレコードを挿入できます。

INSERT INTO employees_view (first_name, last_name)
VALUES ('John', 'Doe');

基本テーブル「employees」に新しいレコードが挿入されることに注意してください。

UPDATE文、DELETE文を使用することで、ビュー上のデータを更新、削除することも可能です。

更新可能なビューを実現するには、基本テーブルを作成、ビューを作成、更新操作を処理するトリガ関数を作成、その関数を呼び出すトリガを作成する必要があります。

bannerAds