gpt4 book ai didi

sql - 如果存在不工作

转载 作者:行者123 更新时间:2023-12-04 05:10:02 25 4
gpt4 key购买 nike

我正在尝试创建一个可重新运行的脚本

IF EXISTS ((SELECT * from information_schema.columns where TABLE_SCHEMA=N'MySchema' and TABLE_NAME=N'Table1' AND COLUMN_NAME=N'Column1'))
BEGIN
PRINT 'Updating'

UPDATE [Table2]
SET Column = 0
WHERE Id IN (SELECT t2.Id
FROM [Table2] t2
JOIN [MySchema].[Table1] t1 ON t2.UserId = t1.UserId
WHERE t1.Column1 = 0)

ALTER TABLE [MySchema].[Table1] DROP COLUMN Column1
END

它第一次工作,但第二次我收到错误

Invalid column name 'Column1'.



任何帮助,将不胜感激。我正在使用 sys.columns之前检查列是否存在。它适用于 SQL Server 2005。

最佳答案

T-SQL 不是批处理脚本,解析器在执行之前会检查整个语句。因此,如果子选择中的列不存在,甚至在执行开始之前检查就会失败。

为了让您的代码正常工作,您需要将 UPDATE 和 ALTER 语句作为字符串传递给 EXECUTEEXEC sp_executesql .

另见 Q2586737

关于sql - 如果存在不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012147/

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