lightdb-ignore_row_on_dupkey_index

LightDB 支持 ignore_row_on_dupkey_index hint

LightDB 从23.4 开始支持oracle的 ignore_row_on_dupkey_index hint, 这个hint是用来忽略唯一键冲突的。类似与mysql的 insert ignore。

语法如下:

Description of ignore_row_on_dupkey_index.eps follows

在LightDB中ignore_row_on_dupkey_index的效果等同于on conflict do nothing 子句。

下面说明一下这个hint的注意点以及使用示例。

注意点

  • 您必须指定一个正确的索引。如果没有指定索引,那么该语句将导致LT008错误(oracle是ORA-38912)。
  • 如果指定了多个索引,那么该语句会导致LT010错误(oracle是ORA-38915)。
  • 如果指定了index,那么索引必须存在且唯一。否则,该语句导致LT009错误(oracle是ORA-38913)。
  • IGNORE_ROW_ON_DUPKEY_INDEX提示仅适用于单表插入操作。
  • 如果指定的列对应有多个索引,那么这条语句会导致LT010错误(oracle没有这个特性,因为同一个字段不能有多个索引)。
  • 不能与on conflict 一起使用(oracle 没有on conflict)
  • 在Canopy 下,目前只支持对insert select 使用,且select 的表也需要为分布式表。

note

在ltsql 中可以通过\errverbose 查看错误码及其他详细信息

lightdb@postgres=# \errverbose
ERROR:  LT008: An index must be specified in the index hint
LOCATION:  IgnoreDupKeyHintParse, pg_hint_plan.c:7232
lightdb@postgres=# 

使用示例

初始化

create table test_ignore_dupkey(key1 int, key2 int, key3 int, key4 int);
create unique index test_ignore_dupkey_ui1 on test_ignore_dupkey(key1, key2);
create unique index test_ignore_dupkey_ui2 on test_ignore_dupkey(key3, key4);
create index test_ignore_dupkey_i on test_ignore_dupkey(key3);

示例

lightdb@postgres=# insert into test_ignore_dupkey values(1, 1, 1, 1);
INSERT 0 1
lightdb@postgres=# insert into test_ignore_dupkey values(1, 1, 1, 1);
ERROR:  duplicate key value violates unique constraint "test_ignore_dupkey_ui1"
DETAIL:  Key (key1, key2)=(1, 1) already exists.
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey  test_ignore_dupkey_ui1) */ into test_ignore_dupkey values(1, 1, 1, 2);
INSERT 0 0
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey(key1, key2)) */ into test_ignore_dupkey values(1, 1, 1, 2);
INSERT 0 0
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey) */ into test_ignore_dupkey values(1, 1, 1, 2);
ERROR:  An index must be specified in the index hint
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey test_ignore_dupkey_ui3) */ into test_ignore_dupkey values(1, 1, 1, 2);
ERROR:  An index must be specified in the index hint
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey test_ignore_dupkey_i) */ into test_ignore_dupkey values(1, 1, 1, 2);
ERROR:  Index specified in the index hint is invalid
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey test_ignore_dupkey_ui1 test_ignore_dupkey_ui2) */ into test_ignore_dupkey values(1, 1, 1, 2);
ERROR:  Multiple indexes in ignore duplicate key hint
lightdb@postgres=# update/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey  test_ignore_dupkey_ui1) */ test_ignore_dupkey set key2 = 2 where key1 = 1;
ERROR:  IGNORE_ROW_ON_DUPKEY_INDEX hint disallowed for this operation
lightdb@postgres=# create unique index test_ignore_dupkey_ui3 on test_ignore_dupkey(key3, key4);
CREATE INDEX
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey(key3, key4)) */ into test_ignore_dupkey values(1, 2, 1, 1);
ERROR:  Multiple indexes in ignore duplicate key hint
DETAIL:  find multiple indexes by fields
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey  test_ignore_dupkey_ui1) */ into test_ignore_dupkey values(1, 1, 1, 2)
lightdb@postgres-# on conflict (key1, key2) do nothing;
ERROR:  IGNORE_ROW_ON_DUPKEY_INDEX hint disallowed for this operation
DETAIL:  insert operation with on confict clause is not supported
lightdb@postgres=# 下面与 oracle 不同, 对于(test_ignore_dupkey()), oracle 是hint语法错误,不会报错
lightdb@postgres=# insert/*+IGNORE_ROW_ON_DUPKEY_INDEX(test_ignore_dupkey()) */ into test_ignore_dupkey values(1, 2, 1, 1);
ERROR:  An index must be specified in the index hint

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入了解HMAC加密技术:原理、应用与实践

一、引言 在网络安全领域,消息认证码(MAC)是一种重要的技术手段。Hash-based Message Authentication Code(HMAC)作为其中的一种,凭借其简单、高效、安全的特性,广泛应用于各种网络通信场景。本…

k8s中批量处理Pod应用的Job和CronJob控制器介绍

目录 一.Job控制器 1.简介 2.Jobs较完整解释 3.示例演示 4.注意:如上例的话,执行“kubectl delete -f myJob.yaml”就可以将job删掉 二.CronJob(简写为cj) 1.简介 2.CronJob较完整解释 3.案例演示 4.如上例的话&#xf…

工艺系统所管理数字化实践

摘要 本文介绍了上海核工程设计研究院在数字化转型方面的实践,包括业务数字化和管理数字化两个方面。业务数字化方面,该院通过开发小工具改进工作流程。管理数字化方面,该院采用零代码平台集中管理管道力学信息相关模型和数据,并…

虾皮shopee关键词搜索商品接口,虾皮shopee关键词搜索列表接口,宝贝详情页接口,关键词取商品列表接口

关键词搜索商品API接口在电商平台中具有重要的作用,可以提供精准搜索、增加用户转化率、优化用户体验、精准广告投放以及市场调研和商品策划等功能。这些功能有助于提高用户的购物体验、提升电商平台的竞争力,并增加用户的忠诚度和购买意愿。 shopee.it…

JeeSpringCloud uploadFile.jsp 文件上传漏洞复现

0x01 产品简介 JeeSpringCloud是一款免费开源的JAVA互联网云快速开发平台,微服务分布式代码生成的敏捷开发系统架构,项目代码简洁、注释丰富、上手容易、还同时集中分布式、分布式事务、微服务,同时包含许多基础模块和监控、服务模块,JeeSpri…

RabbitMQ消息模型之Work Queues

Work Queues Work Queues,也被称为(Task Queues),任务模型,也是官网给出的第二个模型,使用的交换机类型是直连direct,也是默认的交换机类型。当消息处理比较耗时的时候,可能生产消息…

供应链 | “利刃出鞘”——顶刊POMS论文解读:制造商借助电子商务部门入侵

论文解读者:肖善,温梓曦,张怡雯,杨子豪 编者按: 解密品牌商在线电商平台:组织结构、策略选择、三方共赢 Manufacturer encroachment with an e‐commerce division 原文作者信息 Shi, S., Wang, C., Ch…

微信小程序上传报错TypeError: Failed to fetch

上传之后报message:TypeError: Failed to fetch这个错误。 关掉项目 > 选择项目的ide界面右上有个齿轮设置 > 代理

嵌入式设备与PC上位机通信协议设计的几点原则

嵌入式设备在运行中需要设置参数,这个工作经常由PC机来实现,需要为双方通信设计协议,有代表性协议是如下三种: 从上表可以看到,一般嵌入式设备内存和运算性能都有限,因此固定二进制是首选通信协议。 一&am…

关于数据可视化编程一些话

这个专栏,主要是我学习数据可视化编程 d3 的一些记录: 1.前需知识: (1)HTML与文档对象模型(DOM); (2)JavaScript; (3)…

【智能算法】改进粒子群优化算法及对比分析

程序名称:改进粒子群优化算法及对比分析 实现平台:matlab 代码简介:基本粒子群算法(BPSO)中,每个优化问题的解都可以看作粒子在搜索空间中的位置,粒子通过飞行速度决定它们的搜索方向和搜索范围,粒子群通…

磁环电感参数计算

磁环电感参数计算 1.什么是电感磁饱和2.电感饱和的原因3.电感饱和带来的影响3.1 感应电动势变化3.2 电感值变化3.3 功率损耗增加3.4 系统稳定性受到影响4.饱和电流计算最近在做DC/DC电源,电感是用磁环绕制的,所以关注一下磁环绕制电感参数的计算,学习学习。 某款磁环参数。 …

【Java安全】Java反射机制-成员变量的赋值与取值

文章目录 前言利用反射机制获取类的成员变量利用反射机制获取类的成员方法总结前言 Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、…

根据优先级 + LRU 缓存数据

文章目录 前言一、优先级队列PriorityQueue 简介 二、优先级LRU总结 前言 在项目中遇到了,需要根据 优先级 LRU 缓存数据; LRU 优先考虑采用hutool ,然后自己附加搞上 一个优先级就行了 一、优先级队列 PriorityQueue 简介 PriorityQueue是基于优先级堆的无界队列。 Prior…

家庭教育,培养娃什么最重要?

家庭教育,培养娃什么最重要? 培养能力最重要 (我这么认为的) 时代巨变,技术变革的非常快,所以总的来说 年轻一代接触的新东西慢慢比老一代的要多,年轻一代的工作会比老一代的多而且多很多&…

mybatis的流式查询

1&#xff1a;第一种&#xff1a;xml配置 <select id"selectFetchSize" fetchSize"100" resultSetType"FORWARD_ONLY" resultType"com.example.poi.entity.EntityDemo">select * from entity_demo</select>1-2&#xff1a…

char* 指针的数据,转为十六进制的字符串

目录 1、用CString的方式&#xff1a; 2、用 string 方式 前言&#xff1a; 有些字符串直接打印出来是乱码&#xff0c;显示不出来。于是要转为十六进制的字符&#xff0c;再打印出来。 C语言字符串转换为16进制&#xff1a;自定义转换函数 1、用CString的方式&#xff1a; …

【Python】实现一个简单的区块链系统

本文章利用 Python 实现一个简单的功能较为完善的区块链系统&#xff08;包括区块链结构、账户、钱包、转账&#xff09;&#xff0c;采用的共识机制是 POW。 一、区块与区块链结构 Block.py import hashlib from datetime import datetimeclass Block:"""区…

大数据-之LibrA数据库系统告警处理(ALM-37014 Gaussdb进程锁文件已经存在)

告警解释 当集群中的CN实例或者DN实例锁文件创建失败时&#xff0c;产生该告警。 告警属性 告警ID 告警级别 可自动清除 37014 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 I…

Linux常用命令——ls 命令详解

文章目录 在Linux操作系统中&#xff0c;ls 命令是最常用且基础的命令之一。它用于列出目录内容&#xff0c;展示文件和目录的信息。本文将详细介绍ls 命令的各个参数及其含义&#xff0c;并通过实例演示它们的用法。 ls命令概述 ls 命令的基本格式为 ls [选项] [文件或目录]…