SQL:负自动增量?

and*_*and 0 sql database oracle triggers stored-procedures

我想available_seatsFLIGHT每次向FLIGHT_PLAN表中添加新行条目时自动减少表中的值

FLIGHT_PLAN 定义为:

FLIGHT_PLAN (plan_number NUMBER, flight_number NUMBER)
Run Code Online (Sandbox Code Playgroud)

并被FLIGHT定义为

FLIGHT (flight_number NUMBER, available_seats NUMBER) 
Run Code Online (Sandbox Code Playgroud)

我应该使用存储过程,触发器吗?

ijw*_*ijw 5

如果这样做,您将在DB中多次存储相同的数据,这是一种优化.您确定需要优化吗?

  • 如果您这样做,请查找触发器.您可能希望在创建,更新和删除FLIGHT_PLAN表时触发以调整FLIGHT表.

  • 如果您不需要优化,或者您还不确定是否需要优化,请不要进行优化.您可以快速查询已分配席位的数量,并从中计算所需的remaining_seats值:

    从FLIGHT_PLAN中选择COUNT(*),其中PLAN_NUMBER =?

    SELECT total_seats FROM FLIGHT;

    ...

    $ available_seats - $ total_seats - $ occupied_seats;