在 SQL 中向视图添加新列

J.D*_*Doe 7 sql-server view

这是我的看法

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 列,所以事实证明很难做到。如果有人可以提供帮助,将不胜感激。谢谢。

也许我需要放弃视图?并重新开始添加两个新列,但是由于它们不存在于我的数据库中的任何表中,因此如何添加它们?

Sea*_*nge 3

您不定义这样的列的数据类型。您让视图使用像这样的基础数据类型。

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)