gpt4 book ai didi

sql - 添加新列后更新时遇到问题

转载 作者:行者123 更新时间:2023-12-02 06:35:08 25 4
gpt4 key购买 nike

给定以下 SQL:

IF EXISTS (SELECT * FROM sys.columns WHERE name = 'NewFieldName' AND object_id = OBJECT_ID('dbo.MyTableName'))
RETURN

-- Add NewFieldName column to part of the Summer 2012 release cycle.
ALTER TABLE dbo.[MyTableName] ADD
[NewFieldName] SmallINT NOT NULL
CONSTRAINT DF_MyTableName_NewFieldName DEFAULT (2)

UPDATE [MyTableName] SET NewFieldName = 1 WHERE [Name] = 'FindMe' --Update one specific value

产生以下错误消息:

Msg 207, Level 16, State 1, Line 10 Invalid column name 'NewFieldName'.

我确信我错过了一些基本的东西,但是尝试在更改之后放置“GO”会使更新每次都运行,而我不想这样做。

如何构建此语句,以便它检查该列是否存在,如果不添加,然后按照我的 UPDATE 语句中所述设置值?

最佳答案

添加新列后,您需要编译引用新列的语句。执行此操作的一种方法是使用 EXEC 将其作为子批处理运行。

IF NOT EXISTS (SELECT * 
FROM sys.columns
WHERE name = 'NewFieldName'
AND object_id = OBJECT_ID('dbo.MyTableName'))
BEGIN
-- Add NewFieldName column to part of the Summer 2012 release cycle.
ALTER TABLE dbo.[MyTableName]
ADD [NewFieldName] SMALLINT NOT NULL
CONSTRAINT DF_MyTableName_NewFieldName DEFAULT (2)

EXEC(' UPDATE [MyTableName] SET NewFieldName = 1 WHERE [Name] = ''FindMe''')
END

它最初对您有用的原因可能是因为在编译批处理时表本身不存在,因此意味着其中引用该表的所有语句都将受到延迟编译。

关于sql - 添加新列后更新时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10268570/

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