9

私は2つのテーブルを持っています。特定の値に応じてテーブルcarに挿入または削除するトリガーをテーブルに作成したいと考えています。fuel

id - SERIAL
fuel - BOOLEAN

燃料

car_id -  INTEGER

トリガーの説明には必要ないため、行データは含めません。

Car基本的に、次のようなトリガーをテーブルに作成したいと考えています。

  • 挿入または更新時に実行されます。
  • の場合にテーブルに挿入Car.idします。FuelCar.fuel is true
  • の場合Car.fuel is false、トリガーはFuelテーブル内のすべての行を削除する必要がありFuel.car_id = Car.idます。

どうすればいいですか?

編集:明確にするために、私はPostgresを使用しています

4

1 に答える 1

9

RDBMS について言及していないので、それは Oracle だと思います。以下がトリガーです。別の RDBMS を使用している場合は、構文に合わせてコードを調整します。

CREATE OR REPLACE TRIGGER TRG_CAR
   AFTER INSERT OR UPDATE ON CAR
   FOR EACH ROW

   BEGIN

     IF :new.FUEL THEN
       INSERT INTO FUEL (CAR_ID) VALUES (:new.ID);
     ELSE
       DELETE FROM FUEL WHERE CAR_ID = :new.ID;
     END IF;
   END;
于 2013-02-08T13:00:21.503 に答える