9

我有两张桌子。我想在表上创建一个触发器,该触发器将根据某个值car在表上插入或删除。fuel

id - SERIAL
fuel - BOOLEAN

燃料

car_id -  INTEGER

我不包括任何行数据,因为触发器的描述不需要它。

基本上,我想在Car表上创建一个触发器:

  • 在插入或更新时运行。
  • 如果 . 则插入表Car.id中。FuelCar.fuel is true
  • 如果是,触发器应该删除表 whereCar.fuel is false中的所有行。FuelFuel.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 回答