SQL服务器不能增删改列?
SQL Server can't add, delete, add column?
当我 运行 这是一个批次时:
ALTER TABLE SomeTable ADD FOO int NULL;
alter table SomeTable drop column foo
ALTER TABLE SomeTable ADD FOO int NULL;
select top 1 FOO from SomeTable
...为什么在 SQL Management studio 中的最终结果是 table SomeTable 上不存在 FOO 列?
select 语句给出错误,但之前的语句没有引发错误。
添加 GO 语句可以解决问题,但为什么在单个批次中它会像现在这样?
“为什么 SQL Management studio 的最终结果是 table SomeTable 上不存在 FOO 列?” 事实并非如此。问题是您正在尝试引用在您将其添加到的 table 上执行 ALTER
的同一批次中的列;这导致解析错误并且整个批次不是 运行.
要么将 SELECT
拆分为单独的批次(在 SSMS 中使用 GO
),要么推迟 SELECT
:
的解析
EXEC sys.sp_executesql N'SELECT TOP 1 FOO FROM dbo.SomeTable ORDER BY SomeColumn;';
当我 运行 这是一个批次时:
ALTER TABLE SomeTable ADD FOO int NULL;
alter table SomeTable drop column foo
ALTER TABLE SomeTable ADD FOO int NULL;
select top 1 FOO from SomeTable
...为什么在 SQL Management studio 中的最终结果是 table SomeTable 上不存在 FOO 列?
select 语句给出错误,但之前的语句没有引发错误。
添加 GO 语句可以解决问题,但为什么在单个批次中它会像现在这样?
“为什么 SQL Management studio 的最终结果是 table SomeTable 上不存在 FOO 列?” 事实并非如此。问题是您正在尝试引用在您将其添加到的 table 上执行 ALTER
的同一批次中的列;这导致解析错误并且整个批次不是 运行.
要么将 SELECT
拆分为单独的批次(在 SSMS 中使用 GO
),要么推迟 SELECT
:
EXEC sys.sp_executesql N'SELECT TOP 1 FOO FROM dbo.SomeTable ORDER BY SomeColumn;';