提问人:paolov 提问时间:5/12/2023 最后编辑:Salman Apaolov 更新时间:5/17/2023 访问量:313
使用 GO 更改表会导致语法错误
Alter table with GO results in syntax error
问:
我已经为这个错误挠头了一段时间。
以下脚本:
alter table t alter column c int
GO
错误结果:
Incorrect syntax near 'GO'.
我主要想要的是将此脚本嵌入到较长的脚本中,因此需要在脚本的其余部分继续之前执行事务。我也尝试过带分号和不带分号,这没有区别。
我将不胜感激任何善意的指导。
SQL Server 2016 和 2019 中出现相同的错误。我正在 SSMS 中以交互方式运行 SQL。该表的存在不会对错误产生任何影响。我已经尝试过以下DDL:
create table t (c float)
答:
-1赞
Parth M. Dave
5/12/2023
#1
在我看来,您的代码是正确的。只需尝试删除评论,并确保没有可用空间。GO
ALTER TABLE t ALTER COLUMN c int;
GO
ALTER TABLE t ALTER COLUMN c int;
GO
评论
0赞
Dale K
5/12/2023
查看评论,您会发现 OP 已经完成了所有这些选项。
0赞
Parth M. Dave
5/12/2023
只是让我知道我所说的是在评论中定义?
0赞
Lev Gelman
5/14/2023
分号就够了,只需删除 GO
4赞
Salman A
5/15/2023
#2
我能够使用使用 Macintosh 行尾(CR 而不是 CR LF 或 LF)的 SQL 文件重现该问题:
解决方案是将行结尾转换为 Windows,如此处所述。
评论
0赞
paolov
5/17/2023
问题不是由于行尾 OP 在 Windows 上。ALTER TABLE t ALTER COLUMN 与 ALTER TABLE t ADD 或其他更改列计数的 DDL 语句之间显然存在差异。前者错误与语法错误,如果你在它后面放一个 GO。后者不会出错,实际上需要 GO。否则,则会出现其他错误。
0赞
Salman A
5/17/2023
没有人能够重现您面临的问题(请参阅聊天中的评论)。最接近的是更改 SSMS 中的批处理分隔符,但这会导致下面的红色波浪线和你提到的错误,但你说情况并非如此。换行问题是我得到的最接近的问题。GO
0赞
paolov
5/17/2023
编写带有批处理分隔符 (GO) 的 ALTER TABLE t ALTER COLUMN 语句和带有批处理分隔符 (GO) 的 ALTER TABLE ADD COLUMN 语句,以及这两个语句后跟一个 INSERT 语句是否可以为您编译和执行?即 ALTER 后跟 INSERT,中间有 GO。
0赞
Salman A
5/17/2023
是的,确实如此......
0赞
paolov
5/17/2023
你真的都试过了吗?并且既编译又运行?你有截图吗?
评论
GO