我有以下三个表:
CREATE TABLE Flights (
route_number INT NOT NULL PRIMARY KEY,
operated_by INT NOT NULL,
airplane_model VARCHAR(30) NOT NULL,
source VARCHAR(20),
destination VARCHAR(20),
FOREIGN KEY (operated_by) REFERENCES Airline(airline_id),
FOREIGN KEY (airplane_model) REFERENCES Airplanes(airplane_id)
);
CREATE TABLE outgoing (
route_number INT NOT NULL PRIMARY KEY,
poTime Date NOT NULL,
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
CREATE TABLE incoming (
route_number INT NOT NULL PRIMARY KEY,
paTime date NOT NULL,
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
CREATE TABLE departures(
depid int not null PRIMARY KEY,
route_number INT NOT NULL,
gate VARCHAR(3) NOT NULL,
depT date NOT NULL,
depD date NOT NULL,
status VARCHAR(10),
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
CREATE TABLE ARRIVALS(
route_number INT NOT NULL,
gate VARCHAR(3) NOT NULL,
arrT date NOT NULL,
arrD date NOT NULL,
status VARCHAR(10),
arrid int not null PRIMARY KEY,
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
我正在尝试创建一个约束,即在计划时间(paTime 和 poTime)的计划时间(paTime 和 poTime)间隔内,没有两个航班可以在计划时间周围有相同的登机口。
我想我应该创建一个视图并插入到视图中......但显然你不允许在可更新的视图表中使用子查询?我将如何添加此约束?
注:PaTime 和 PoTime 是计划到达时间和计划出发时间,而 arrT 和 depT 是实际到达和实际出发时间,允许不同。
所以基本上: 1. 一个航班被添加到航班表中(不需要额外的约束) 2. 如果它是一个入境航班,它的计划到达时间被添加到 Arrivals 表中(同样没有约束需要担心)。3. 在 Arrivals 表中,将实际到达时间(可以与计划到达时间不同)、状态和门添加到表中。这是我需要约束的地方!检查此表和出发表中是否存在该门号,从他们的计划到达/出发时间开始 -1 到 +1 小时。所以对于这张表,我需要一种加入传入(用于 Patime)传出(用于 Potime)时间并检查约束的方法