这是我的看法
CREATE VIEW seat_availability AS
SELECT flightid,flightdate, maxcapacity,
FROM flight
Run Code Online (Sandbox Code Playgroud)
我想添加 2 个名为“bookedseats”和“availableseats”的新列,它们在任何表中都不存在,但却是我需要添加的列。
我在网上做了我的研究,有人说你可以通过使用来改变观点:
ALTER VIEW
Run Code Online (Sandbox Code Playgroud)
有些人说您不能这样做,必须从刚刚创建的视图进行编辑。
我试过这个:
CREATE VIEW seat_availability AS
SELECT flightid,flightdate, maxcapacity, bookedseats varchar(10), availableseats varchar(10)
FROM flight
Run Code Online (Sandbox Code Playgroud)
这给出了这个错误:
错误:“varchar”第 2 行处或附近的语法错误:...ECT Flightid、flightdate、maxcapacity、bookedseats varchar(10...
我也尝试过更改视图:
ALTER VIEW seat_availability AS
SELECT flightid,flightdate, maxcapacity, bookedseats varchar(10), availableseats varchar(10)
FROM flight
Run Code Online (Sandbox Code Playgroud)
我得到了这个错误:
错误:“AS”第 1 行处或附近存在语法错误:ALTER VIEW Seat_availability AS
如果其他表中存在列,那么添加列会很容易,但因为我需要添加任何表中都不存在的 2 列,所以事实证明很难做到。如果有人可以提供帮助,将不胜感激。谢谢。
也许我需要放弃视图?并重新开始添加两个新列,但是由于它们不存在于我的数据库中的任何表中,因此如何添加它们?
您不定义这样的列的数据类型。您让视图使用像这样的基础数据类型。
ALTER VIEW seat_availability AS
SELECT flightid
, flightdate
, maxcapacity
, bookedseats
, availableseats
FROM flight
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要显式更改数据类型,则需要像这样使用 CONVERT。
ALTER VIEW seat_availability AS
SELECT flightid
, flightdate
, maxcapacity
, bookedseats = convert(varchar(10), bookedseats)
, availableseats = convert(varchar(10), availableseats)
FROM flight
Run Code Online (Sandbox Code Playgroud)