sql - 更新查询 teradata 的奇怪行为
问题描述
下面的查询更新了 set 语句中未提及的列。查询有什么问题吗?
提前致谢。
UPDATE EDW1
FROM
TABLE1 EDW1, ( SELECT EDW2.A , EDW2.B, EDW2.C, EDW3.D, EDW3.E , EDW3.F
FROM TABLE2 EDW2 LEFT JOIN TABLE3 EDW3 ON
EDW2.X =EDW3.X ) EDW4
SET
product_name= EDW4.B
,revenue_type= EDW4.C
,product_type = EDW4.D
,product_category= EDW4.E
,product_family= EDW4.F WHERE EDW1.A= EDW4.A;
解决方案
根据您的示例,只会更新以下列。
product_name = EDW4.B
revenue_type = EDW4.C
product_type = EDW4.D
product_category = EDW4.E
product_family = EDW4.F
- 我的猜测是桌子上有一个触发器可以更新
- 有一个工作或程序正在监视和执行维护
- 数据库启用了某种审计跟踪,可以进行更新
- 其他人同时进行更改
因此,要回答您的问题,您的查询只会更新列出的那些表。如果您有可以测试的开发区,您可以尝试:
- 使用分析工具查看您的查询完成后立即运行的其他查询。
- 只需非常简单地更新一列,您看到这种行为了吗?然后缩小到造成这种情况的原因
顺便说一句,我的钱在触发:)
推荐阅读
- typescript - 是否可以将 typeof 与通用函数一起使用?
- r - 在 R 中:如何根据另一个向量中的起点找到向量中特定元素的第一次出现
- python - 如何获得令牌来创建 NLP 模型?
- javascript - HTML DOM 选择除一个元素 JS 之外的所有内容的问题
- java - PDFBox 2.0 创建签名字段并使用已签名的文档保存增量
- python - Pygame 不会让我画一个圆错误参数 3 必须是长度为 2 的序列,而不是 4
- azure - Azure 网站将一个 https URL 重定向到同一个域的另一个 https URL
- angular - 在 Angular 测试中使用模拟服务创建类实例
- javascript - 如果不存在则获取 SVG 路径
- javascript - AJAX 收到帖子时启动 javascript