首页 > 解决方案 > 更新查询 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;

标签: sqlsql-updateteradatateradata-sql-assistant

解决方案


根据您的示例,只会更新以下列。

product_name = EDW4.B
revenue_type = EDW4.C
product_type = EDW4.D
product_category = EDW4.E
product_family = EDW4.F
  • 我的猜测是桌子上有一个触发器可以更新
  • 有一个工作或程序正在监视和执行维护
  • 数据库启用了某种审计跟踪,可以进行更新
  • 其他人同时进行更改

因此,要回答您的问题,您的查询只会更新列出的那些表。如果您有可以测试的开发区,您可以尝试:

  • 使用分析工具查看您的查询完成后立即运行的其他查询。
  • 只需非常简单地更新一列,您看到这种行为了吗?然后缩小到造成这种情况的原因

顺便说一句,我的钱在触发:)


推荐阅读