数据仓库服务 GAUSSDB(DWS)-MERGE INTO:参数说明

时间:2024-12-10 14:35:49

参数说明

  • plan_hint子句

    以/*+ */的形式在关键字后,用于对指定语句块生成的计划进行hint调优,详细用法请参见使用Plan Hint进行调优

  • INTO子句

    指定正在更新或插入的目标表。

    • table_name

      目标表的表名。

    • partition_clause

      用来指定目标表分区的子句。该参数9.1.0及以上集群版本支持。

      只有当目标表是分区表时可以指定分区。

      指定的分区名需要是目标表已存在的分区或者指定的分区键值所处的分区已存在。

    • alias

      目标表的别名。

      取值范围:字符串,符合标识符命名规范。

  • USING子句

    指定源表,源表可以为表、视图或子查询。

    • partition_clause

      用来指定源表分区的子句。该参数9.1.0及以上集群版本支持。

      只有当源表是分区表时可以指定分区,视图或者子查询不支持指定分区。

      指定的分区名需要是源表已存在的分区或者指定的分区键值所处的分区已存在。

    • alias

      目标表的别名。

      取值范围:字符串,符合标识符命名规范。

  • ON子句

    关联条件,用于指定目标表和源表的关联条件。不支持更新关联条件中的字段。ON关联条件可以是ctid,xc_node_id,tableoid这三个系统列。

  • WHEN MATCHED子句

    当源表和目标表中数据针对关联条件可以匹配上时,选择WHEN MATCHED子句进行UPDATE操作。

    不支持更新分布列。不支持更新系统表、系统列。

    当指定目标表的分区时,若UPDATE目标表的分区键导致分区变化:

    • 目标表是列存表时,会报错“The inserted partition key is not mapped to the specified 'partition_name' partition”。
    • 目标表是行存表时:
      • 若目标表的表属性为ENABLE ROW MOVEMENT,则不会报错,更新的数据会属于新分区。
      • 若目标表的表属性为DISABLE ROW MOVEMENT,会报错“fail to update partitioned table 'table_name' ”。
  • WHEN NOT MATCHED子句

    当源表和目标表中数据针对关联条件无法匹配时,选择WHEN NOT MATCHED子句进行INSERT操作。

    不支持INSERT子句中包含多个VALUES。

    WHEN MATCHED和WHEN NOT MATCHED子句顺序可以交换,可以缺省其中一个,但不能同时缺省,不支持同时指定两个WHEN MATCHED或WHEN NOT MATCHED子句。

    当指定目标表的分区时,若INSERT了超出该分区范围的数据,会报错“The inserted partition key is not mapped to the specified 'partition_name' partition”。

  • DEFAULT

    用对应字段的缺省值填充该字段。

    如果没有缺省值,则为NULL。

  • WHERE condition

    UPDATE子句和INSERT子句的条件,只有在条件满足时才进行更新操作,可缺省。不支持WHERE条件中引用系统列。

support.huaweicloud.com/sqlreference-910-dws/dws_06_0235.html