[英]SQL creating a procedure to insert new info into a table
我已经获得了一个过程的结构,并且必须添加条件语句才能完成该过程。 当且仅当满足以下条件时,我必须预订现有航班。
• 航班上剩余的座位数大于或等于要预订的座位数。
• 航班日期必须在未来(使用当前日期进行比较)
• customer_email、flight_num 和airline_name 的组合在系统中应该是唯一的。
• 一位客户每天不能预订超过一趟未取消的航班
• 注意:如果customer_email、flight_num 和airline_name 的组合已作为预订存在,则应更新该预订的座位数以在剩余足够可用座位的情况下添加额外座位。 如果已经存在的预订被取消,客户将无法预订此航班。
相关表格是
预订(客户、Flight_Num、Airline_Name、Num_Seats、Was_Cancelled)
示例条目看起来像 ('bluesclues@gmail.com', 4, 'Delta Airlines', 4, 0) was_cancelled 是二进制 1 或 0,其中 1 表示预订已取消,0 表示预订未取消。
航班(Flight_Num、Airline_Name、From_Airport、To_Airport、Departure_Time、Arrival_Time、Flight_Date、Cost、Capacity)
示例看起来像 ('1', 'Delta Airlines', 'ATL', 'JFK', '10:00:00', '12:00:00', '2021-10-18', '400.00', ' 150')
我目前的尝试是
########
如果存在 book_flight 则丢弃程序; delimiter // 创建过程 book_flight (in i_customer_email varchar(50), in i_flight_num char(5), in i_airline_name varchar(50), in i_num_seats int, in i_current_date date) sp_main: begin
IF NOT EXISTS (select * from book where book.Customer = i_customer_email and book.Flight_Num = i_flight_num and book.Airline_Name = i_airline_name) then if (i_current_date < flight.Flight_Date) THEN INSERT INTO travel_reservation_service.book VALUES (i_customer_email, i_flight_num, i_airline_name, i_num_seats,0); 万一; 万一;
结束 // 分隔符;
##############
但是,我不知道如何结合条件来检查剩余座位数。
此查询选择我想要的信息列,但我不知道如何将其添加到条件中。
SELECT (容量 - (coalesce(Num_Seats,0))) 作为座位左侧从航班左侧外部加入航班预订。Flight_Num = book.Flight_Num group by flight.Flight_Num
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.