插入或更新时的PostgreSQL触发器

时间:2013-02-08 12:05:48

标签: sql postgresql triggers constraints

我有两张桌子。我想在car表上创建一个触发器,它将在fuel表上插入或删除,具体取决于某个值。

汽车

id - SERIAL
fuel - BOOLEAN

燃料

car_id -  INTEGER

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

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

  • 在插入或更新时运行。
  • 如果Car.id
  • ,请将Fuel插入Car.fuel is true表格
  • 如果Car.fuel is false,触发器应删除FuelFuel.car_id = Car.id中的所有行。

我该怎么做?

编辑:澄清我正在使用Postgres

1 个答案:

答案 0 :(得分:5)

由于您没有提到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;