ALTER TABLE...ADD 在 SSMS 中不起作用

ALTER TABLE...ADD not working in SSMS

我正在尝试通过在存储过程中添加新列来更改 table。这是我拥有的:

USE [Lab5]
go
create procedure do_ver2 as
    alter table VehicleContract
        add trailerNr varchar(7) null;
    alter table VehicleContract
        add constraint FK_VehicleContract_Trailers foreign key (trailerNr) references Trailers(trailerNr);
go

问题是...虽然它没有显示任何错误,但它也没有创建新列。知道为什么吗?是T-SQL.

您需要使用 Dynamic-SQL 在存储过程中执行 DDL 语句:

CREATE PROCEDURE do_ver2 AS
BEGIN
    EXEC('alter table VehicleContract add trailerNr varchar(7) null;');
    EXEC('alter table VehicleContract add constraint FK_VehicleContract_Trailers foreign key (trailerNr) references Trailers(trailerNr);');
END
GO

编辑:

在没有 BEGINEND 的代码中,您的存储过程仅包含第一条语句。您应该始终添加 begin/end 块。

USE [Lab5]
go
create procedure do_ver2 as
    EXEC('alter table VehicleContract
        add trailerNr varchar(7) null;');
    EXEC('alter table VehicleContract
        add constraint FK_VehicleContract_Trailers 
        foreign key (trailerNr) references Trailers(trailerNr);');
go

如果您检查存储过程的代码,您会发现它只有:

 create procedure do_ver2 as
        EXEC('alter table VehicleContract add trailerNr varchar(7) null;');