gpt4 book ai didi

Oracle 触发器更新不同表中的实体

转载 作者:行者123 更新时间:2023-12-02 06:56:14 24 4
gpt4 key购买 nike

这是来自大学类(class),也是我第一次使用 Oracle(并使用触发器)。我们应该为航空公司创建一个数据库。

数据库的一部分是

CREATE TABLE FLIGHT_BOOKING (
BOOKING_ID NUMBER(11) PRIMARY KEY,
BOOKING_TIME DATE NOT NULL,
EMPLOYEE_ID NUMBER(11) NOT NULL,
FLIGHT_ID NUMBER(11) NOT NULL,
TOTAL_COST NUMBER(4,2) NOT NULL
);

CREATE TABLE FLIGHT (
FLIGHT_ID NUMBER(11) PRIMARY KEY,
PLANE_ID NUMBER(11) NOT NULL,
START_ID NUMBER(11) NOT NULL,
DESTINATION_ID NUMBER(11) NOT NULL,
TRANSIT_ID NUMBER(11),
DEPARTURE_TIME DATE NOT NULL,
ARRIVAL_TIME DATE NOT NULL,
NUM_BOOKED NUMBER (4) NOT NULL
);

CREATE TABLE PASSENGER (
PASSENGER_ID NUMBER(11) PRIMARY KEY,
FIRST_NAME VARCHAR2(20) NOT NULL,
MIDDLE_NAME VARCHAR2(20) NULL,
LAST_NAME VARCHAR2(20) NOT NULL,
TELEPHONE NUMBER(11) NOT NULL,
BOOKING_ID NUMBER(11) NOT NULL
);

所以我想要做的是创建一个触发器,以便每次将新乘客添加到 PASSENGER 表中时,触发器都会从 FLIGHT_BOOKING 表中找到相应的 FLIGHT_ID,并为 FLIGHT 表中相应航类的 NUM_BOOKED 递增。

我尝试浏览 Oracle 文档,但找不到任何描述涉及两个或多个表的情况的内容。

任何帮助将不胜感激!

最佳答案

你可以这样做:

CREATE OR REPLACE TRIGGER update_flight_booking_info
AFTER INSERT ON PASSENGER
FOR EACH ROW

DECLARE
v_flight_id number;
v_booking_id number;
BEGIN
v_booking_id := :new.booking_id ;

select flight_id into v_flight_id
from flight_booking
where booking_id = v_booking_id;

update flight
set NUM_BOOKED = NUM_BOOKED + 1
where flight_id = v_flight_id;
END;

HTH。

关于Oracle 触发器更新不同表中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com