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

当我进行验证(如果存在)时,SQL错误指出无效的列名。为什么?

程沛
2023-03-14
问题内容

有一个过渡脚本,该脚本创建新的列DOCUMENT_DEFINITION_ID以MESSAGE_TYPE_ID +
5的值对其进行过渡,然后删除MESSAGE_TYPE_ID列。

第一次一切运行正常,但是当我第二次运行脚本时,出现此错误:

无效的列名“ MESSAGE_TYPE_ID”。

这没有任何意义,因为我已经验证了该列是否存在。

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'MESSAGE_TYPE_ID' AND TABLE_NAME = 'DOCUMENT_QUEUE')
BEGIN
  UPDATE DOCUMENT_QUEUE SET DOCUMENT_DEFINITION_ID = MESSAGE_TYPE_ID + 5 --Error here.. but condition is not met

为什么?


问题答案:

试试这个

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'MESSAGE_TYPE_ID' AND TABLE_NAME = 'DOCUMENT_QUEUE')
BEGIN
   EXEC( 'UPDATE DOCUMENT_QUEUE SET DOCUMENT_DEFINITION_ID = MESSAGE_TYPE_ID + 5 ')
END

通过将更新包装在动态语句中,它绕过了延迟的名称解析。



 类似资料:
  • 通过HTTP POST to URL发出请求: 授权头OAuth参数在HTTP授权头中发送 字段值oauth_consumer_key应用程序的consumer key(40个字符)oauth_nonce以ASCII格式随机生成的字符串。具有相同nonce和时间戳组合的后续请求将被忽略。建议使用64位随机数。oauth_签名请求签名oauth_签名方法HMAC-SHA1〃或“明文oauth_时间戳

  • 问题内容: 我正在尝试通过链接的SSAS服务器执行SQL查询。初始查询工作正常: 但是,如果我尝试添加: 我得到一个错误 无效的列名“值” 有什么想法我可能做错了吗? 因此,问题在于处理查询元素的顺序与写入顺序不同。根据此消息来源: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx MSSQL中的评估顺序为: FROM ON JOIN

  • 我正在尝试从外部远程服务对文档进行签名。签署过程分两个阶段进行。远程服务在第一阶段期待base64编码的散列,并在身份验证后发出令牌。在第二阶段,我们将使用接收到的令牌再次传递相同的散列并获得base64签名的散列。我在这里附上签名错误的文件。文件 如果有人可以分析它并指导我评估无效签名背后的原因。我正在使用执行与pdf相关的操作。 更新 根据反馈,我做了一些更正。文档现在正在更改。已更改的文档

  • 我正在开发一个ASP。Net核心3.0 API,Azure Cosmos DB作为持久性存储。这是我第一次尝试使用Cosmos DB。当我尝试创建一个新项目(文档)时,我在Postman中返回了一个错误,它说。。。 我不知道是什么导致了这个问题。 我正在我的项目中使用微软.Azure.Cosmos v3.4.0 nuget 这是我的存储库中用于添加新帐户文档的方法。 这是我在调试模式下悬停在“Ac

  • -web应用程序位于此链接https://github.com/exo-archives/acceptance -堆栈跟踪: [错误]无法执行目标组织。阿帕奇。专家插件:maven surefire插件:2.10:项目验收webapp上的测试(默认测试):存在测试失败。[错误][错误]请参阅C:\acceptance\acceptance\acceptance webapp\target\sure

  • 问题内容: 我知道这似乎很普通,但是我迷失了。单击评估.jsf中的“添加”按钮时发生。无论如何,我已经附上了我认为是相关的部分。 FWIW,我调试时未触发AssessmentType.equals()。 提前致谢。 Assessment.xhtml: Assessment.jsf: AssessmentType.java: AssessmentFieldConverter.java Assessm