gpt4 book ai didi

SQL 更改表然后修改值

转载 作者:行者123 更新时间:2023-12-05 00:27:30 28 4
gpt4 key购买 nike

我有一个正在处理的 SQL 脚本,但在创建(或编辑)列然后尝试修改该新列时遇到问题。

例如:

BEGIN
ALTER TABLE SampleTable ADD ColumnThree int
END

IF (EXISTS (SELECT * FROM sys.columns WHERE name = 'ColumnThree'))
BEGIN
UPDATE SampleTable SET ColumnThree = 0
END

现在我认为 BEGIN/END block 会将这两项分开,但我收到错误“无效的列名‘ColumnThree’”。当我尝试运行它时。为什么?第一个 BEGIN/END 不应该设置 ColumnThree 和更多到 IF(EXISTS 应该保护 UPDATE 语句不被运行,如果该列名不存在。

做这样的事情的正确方法是什么? (我似乎有几个类似的场景需要这样做)。

最佳答案

你需要GO ,而不是 BEGIN/END。此外,您可能需要稍微编辑一下 EXISTS 查询以确保获得正确的表:

ALTER TABLE SampleTable ADD ColumnThree int 
GO

IF (EXISTS
(SELECT 1
FROM
sys.columns c
INNER JOIN sys.tables t ON
c.object_id = t.object_id
WHERE
t.name = 'SampleTable'
AND c.name = 'ColumnThree'))
BEGIN
UPDATE SampleTable SET ColumnThree = 0
END

如果您使用多个模式,您也需要通过 sys.schemas 进行检查。

关于SQL 更改表然后修改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293638/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com