我正在为航空公司预订系统创建一个存储过程,该过程必须允许我添加具有有效飞机类型的新航班,不允许重复,目的城市和出发城市不能相同,并且总数预订的旅客默认为0。
我已经创建了两个关于plane和flight的表,并且在flight表中列出了飞机ID作为外键,但是我不确定如何从flight表上的飞机表中验证飞机类型。我应该使飞机类型成为外键吗? 下面是我的代码:
CREATE PROCEDURE Addnewflight @f_id int, @dep_city varchar(50), @dest_city varchar(50), @no numeric(12,2), @dt datetime, @total_passenger numeric(12,2)
AS
DECLARE @count INT;
SET @count= (SELECT COUNT(1) FROM dbo.flight where flight_id=@f_id)
IF @count=0 AND @dep_city<>@dest_city
BEGIN
INSERT INTO dbo.[flight]([flight_id],[departure city],[destination city],[number],[date],[total number of passengers]) VALUES(@f_id,@dep_city,@dest_city,@no,@dt,@total_passenger)
END
ELSE
BEGIN
PRINT 'Duplicates are not allowed. Destination and departure city cannot be the same.';
END
答案 0 :(得分:0)
在您的存储过程中,为平面类型声明一个变量:
declare @plane_type varchar(max);
然后使用您的select语句(从上面的注释中获取)设置变量:
set @plane_type = (SELECT [Plane Type] FROM dbo.plane WHERE [Plane Type]=747)
(我在列名的周围加上了方括号,因为它看起来包含空格字符。)
然后在您的insert
语句中,添加Plane Type:
INSERT INTO dbo.[flight]([flight_id],[plane type],[departure city],[destination city],[number],[date],[total number of passengers]) VALUES(@f_id,@plane_type,@dep_city,@dest_city,@no,@dt,@total_passenger)