当前位置: 首页 > 面试题库 >

如何在同一批处理语句中更新新添加的列

鲁华茂
2023-03-14
问题内容

在SQL Server 2008中,我想在表中添加一列并在之后立即对其进行更新,但前提是之前尚未创建它们。如果该列之前已创建,则我不希望运行更新。

IF NOT EXISTS (SELECT *
               FROM [INFORMATION_SCHEMA].[COLUMNS] 
            WHERE [TABLE_NAME] = 'SETTINGS' AND [COLUMN_NAME] = 'COLOR_SCHEME')
BEGIN
    ALTER TABLE [SETTINGS]
    ADD [COLOR_SCHEME] int NULL

    UPDATE [SETTINGS]
    SET [COLOR_SCHEME] = 1
END

在列添加之后放置“ GO”不起作用,因为那将不是一个完整的批处理语句,但是如果我尝试像这样运行它,则会收到错误“无效的列名’COLOR_SCHEME’”。

关于如何在运行更新时使该列存在的任何想法?


问题答案:

您可以尝试使用动态SQL代替alter语句:

DECLARE @SQL NVARCHAR(4000)
SET @SQL='ALTER TABLE [SETTINGS] ADD [COLOR_SCHEME] int NULL'
EXEC(@SQL)


 类似资料:
  • 我有一个批处理过程,它正在为一组实体重新计算数据。通过Hibernate从DB获取实体列表: 当流程运行时,某些实体似乎正在分离,导致两种症状: 当尝试获取惰性数据时,我得到一个异常: 在我的第一次尝试中,我试图通过调用inside

  • 问题内容: 我有一个dao,它基本上使用hibernate将记录插入到一​​个表中,该dao用标记为注释,并且我有一个服务,该服务会生成其他一些东西,然后调用我的dao。我的服务也标注了使用。 我叫服务循环。我在dao上的插入内容是否可以批量或一个接一个地工作?我如何确定它们可以批量工作?hibernateTransaction Manager是否管理批处理插入? 我正在使用Oracle DB。

  • 问题内容: 对于Java-JDBC API和Oracle数据库,我有一个稍微独特的要求。我将autoCommit设置为默认值,这对于Oracle是正确的,并且我使用的示例与此链接相似。 但是,当我添加说1000批次时,可以说每个批次都是插入的。并且让我们假设大约20条记录违反了某些约束,我希望其余980条变为COMMITTED(并且以后对使用任何其他连接的任何其他查询都可见)到数据库,并忽略20条

  • 本文向大家介绍批处理添加多个新的域名到hosts,包括了批处理添加多个新的域名到hosts的使用技巧和注意事项,需要的朋友参考一下 要求:批处理(.bat) 添加多个新的域名到hosts,先检测是否已存在,如果已存在的域名就不添加 其他尚未存在的域名,则直接添加 google搜寻是有找到代码  如下: 不过此代码只能检测一行域名 如果要添加以下各种不同域址,如何改写代码才能检测多个的域名? 127

  • 问题内容: 你可以添加新的语句(例如,,)Python的语法? 说,允许 要么, 如果您 应该的话 ,不要太多,但如果可能的话,就可以了(只需修改python解释器代码即可) 问题答案: 您可能会发现这很有用-Python内部:在Python上添加新语句,引用如下: 本文旨在更好地了解Python前端的工作方式。仅仅阅读文档和源代码可能会有点无聊,因此我在这里采用动手实践的方法:我将向Python

  • 问题内容: 如何批量更新mysql数据?如何定义这样的事情: 具有一些值,例如: 和其他值: 也许用mysql是不可能的?一个PHP脚本? 问题答案: 在这种情况下,最简单的解决方案是使用构造。它的工作速度非常快,并且可以轻松完成工作。 或使用建筑