Oracle/DB2 null key index

大数据-玩转数据-Oracle系统知识小结 一、说明 Oracle数据库是甲骨文的核心产品,Oracle 的操作都遵循sql标准,所以各个版本在基本操作方面都变化不大。Oracle划分在大型关系数据库范畴,比较Mysql或Nosql数据库来说,还是缺少些扩容的灵活性,但传统金融、通信、电力、航空、保险、大型企业用得比较多。 二、背景知识、数据建模和Linux 1.关系数据库 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中 阅读详情


This issue is coming from when migrate DB2 unique index to Oracle.


Concept Definition

- KEY of an index:    A "KEY" is the set of columns making up an index. That is it may be one column or multiple columns.

- NULL KEY of an index: a "NULL KEY" that is a key where all columns are NULL.



DB2 only one "NULL KEY" may exist in a unique index.

When table and index are created as

CREATE TABLE TAB (A DECIMAL(6) not null,
                  B CHAR(10),
                  C DECIMAL(6),
                  PRIMARY KEY(A));

CREATE UNIQUE INDEX IDX ON TAB(B,C);


Following SQL will fail on 2nd statement:

INSERT INTO TAB VALUES(1, NULL, NULL);
INSERT INTO TAB VALUES(2, NULL, NULL);

This is the error message:

DB21034E  The command was processed as an SQL statement because it was not a valid Command Line Processor command.
During SQL processing it returned:SQL0803N
One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement
are not valid because the primary key, unique constraint or unique index identified by "IDX" 
constrains table "0000000201" from having duplicate values for the index key.  SQLSTATE=23505


Oracle multiple NULL keys may exist in a unique index.

The same operation above can be executed on Oracle without any failure.


This is because Oracle does not index NULL KEYS; whatever unique or not, an Oracle index does not include rows if all indexed columns are null.
This cause a result is that UNIQUE index in Oracle simply does not know about NULL keys. It's literallxy blind to the multiple NULL KEYS issue.


DB2 "unique where not null" index

UNIQUE WHERE NOT NULL is supported in DB2 for z/OS, which allows for duplicate null values to exist on a unique constraint.


So if we create index using:

CREATE UNIQUE WHERE NOT NULL INDEX IDX ON TAB(B,C)


Then we can get same result as Oracle, i.e,; both insert statements can be executed successfully.


Oracle support non-duplicated null index

Solution: to add a constant value field into index, so that the index key could not be null.


For example we create above index using:

CREATE UNIQUE INDEX IDX ON TAB(B,C,1)


The constant '1' does not means the 1st column, it is a constant; so the index key must not be null because the 3rd column is a constant 1.


The solution for migrating UNIQUE index

If all indexed columns are null-able, a constant 1 should be added into Oracle index definition.

For example DB2 index definition

CREATE UNIQUE INDEX IDX ON TAB(B,C)

if both column B and C are null-able, this index should be redefined in Oracle as:

CREATE UNIQUE INDEX IDX ON TAB(B,C,1)


And if there is either column is "not null", it's not necessary to add the constant 1.



In Summary

CREATE UNIQUE WHERE NOT NULL INDEX IDX ON TAB(B,C)   # on DB2

=equal to=

CREATE UNIQUE INDEX IDX ON TAB(B,C)                  # on Oracle



CREATE UNIQUE INDEX IDX ON TAB(B,C)                  # on DB2

=equal to=

CREATE UNIQUE INDEX IDX ON TAB(B,C,1)                # on Oracle




AWS DMS异构数据库在线迁移实战:从Oracle到PostgreSQL 数据库迁移是云迁移中的核心环节,尤其在异构引擎间(如Oracle到PostgreSQL)需兼顾数据一致性、业务连续性与实时同步能力。其底层依赖变更数据捕获(CDC)机制,通过解析源库事务日志实现低延迟增量同步,技术价值在于支撑零停机切流与金融级数据准确。典型应用场景包括企业上云、架构升级与多云容灾,而实际落地常受制于类型语义差异、网络抖动、Replication Instance资源配置失当等工程细节。本文聚焦AWS DMS在生产环境中的深度调优与故障治理,覆盖全量并行加载、LOB处理、心跳监控、断点续传及 阅读详情

相关推荐

【15】git/docker,jenkins/gerrit,redis/ldap/snmp

硬还原前面回滚掉的版本,commithash因为被回滚掉了,用git log 空(每次提交commit信息)查不到,用git reflog 空(所有操作信息)查,三个区都回滚了保持一致。一般不用git commit -m,直接git commit进入vi界面(进入前要git config core.editor vim设一下vi模式),vi如下写法,注意在最上面写。(会出现Auto-merging自动合并,git pull = git fetch + git merge),进行讨论删除,再。

持续更新ing... 3445

SQL3148W A row from the input file was not inserted into the table.SQLCODE“-803“ was returned 23505

引言 在一次数据库导入的操作中,由于数据是手动编造的,导致import到DB2数据库的时候发生了报错。 正文 SQL0803N One or more values in the insert statement,UPDATE statement,or foreign key update caused by a DELETE statement are not valid because the primary key ,unique constraint or unique index ident

回忆 2704

LPDDR5X内存技术解析:性能提升与优化策略

内存技术在现代计算系统中扮演着核心角色,其性能直接影响整体系统效率。LPDDR5X作为JEDEC最新标准,通过提升数据传输率至8533Mbps、优化能效比15%以上,并扩展突发长度至32字节,显著提升了移动设备的处理能力。这些改进特别适用于5G通信、AI加速(如昇腾芯片)及8K视频处理等高带宽需求场景。技术原理上,LPDDR5X引入了动态电压频率调整(DVFS)和可编程突发长度等创新机制,有效降低了实际应用中的延迟。在工程实践中,合理的PCB布局和信号完整性验证是确保高速稳定运行的关键。随着AI和8K应用的

weixin_29190169的博客 401

DB2关于标识列(自增列)的对比试验、使用示例

文章转载,原文地址:(https://www.cnblogs.com/millen/archive/2011/10/11/2207550.html) 试验环境: 建表t1、t2分别含有不同类型的标识列id,对比不同点 D:/>db2 connect to test user cwgladm using cwglpass 数据库连接信息 数据库服务器 = DB2/NT 8.2.9 SQL 授权标识 = CWGLADM 本地数据库别名 = TEST .

五行缺火 2085

Unity线性空间下PSD透明贴图黑边问题:原理分析与三种解决方案

在计算机图形学中,颜色空间转换与Alpha混合是渲染管线的基础环节。伽马空间与线性空间的差异源于显示设备与人眼感知的特性,现代渲染引擎采用线性工作流以实现更真实的光照计算。然而,当图像处理软件(如Photoshop)导出的纹理数据与游戏引擎(如Unity)的预期格式不匹配时,就会引发技术问题,影响视觉保真度与开发效率。具体表现为,在线性空间下进行Alpha Blend混合时,带透明通道的纹理边缘常出现异常黑边或颜色失真,其核心根源在于纹理数据是否经过“预乘”处理与sRGB标记的解读冲突。这一问题的解决对于提

weixin_34198762的博客 380

实现飞书机器人推送消息到指定群组或者用户

飞书是一个集成了聊天、协作和办公功能的企业级平台,广泛应用于企业内部沟通和协作。飞书机器人(Feishu Bot)是一种强大的工具,允许开发者通过编程接口与飞书进行互动,从而实现自动化消息推送和任务管理。本文将详细介绍如何通过飞书机器人推送消息给指定的人或者群组,帮助您快速上手。

qq_41898196的博客 5868

DB2 基础: 约束

Leon Kwok, DB2 客户支持, IBM 简介:IBM® DB2® for Linux®, UNIX®, and Windows® (DB2) 使用约束对数据执行业务规则,并保障数据库的完整性。 本文描述 ...

941

关于使用vcpkg下载osgearth遇到的问题

注意--x-manifest-root=后面跟着的E:\gitproject\osgearth-osgearth-3.5\vcpkg是你下载的源码解压缩后vcpkg.json的文件地址,然后等待编译完成。安装vcpkg后使用vcpkg install osgearth:x64-windows安装好osgearth并且导入项目使用时,发现无法运行官方文档中示例的main.cpp。这里写一种自己用过的使用vcpkg安装osgearth3.5的方法,源码,打开vcpkg所在的命令行,执行。示例main.cpp。

m0_61776040的博客 1526

db2 import和load

Import和Load 都可以将数据导入到DB2服务器中,但是2者是有很大区别的。 Import 其实执行了SQL 的INSERT 操作。和INSERT 操作一样,Import 执行的时候会激活触发器,所有的约束会强制实现,而且会使用数据库的缓冲池。类似Oracle sql*loader工具的常规路径导入。   Load 工具可以更快的将数据文件导入到数据表中。Load 工具不会与DB2 数据引擎...

weixin_33871366的博客 428

从原理到调试:一次搞懂Camera Sensor的曝光、增益与帧率三角关系

本文深入解析Camera Sensor中曝光、增益与帧率之间的动态平衡关系,揭示低光环境下帧率下降的根本原因。通过实际调试案例和底层公式分析,帮助开发者理解如何优化相机参数设置,实现画质与流畅度的最佳平衡。

weixin_31310913的博客 430

AGV、RGV、四向车openTCS调度系统(三)车辆适配器解读,封装自己的适配器

AGV、RGV、四向车调度。理解适配器的整体作用,以及如何使用官方例子改造自己的适配器,

要这头发有何用 3612

【db2报错】 DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1

db2报错-803,23505如何解决

weixin_44712778的博客 5447

CH569 USBSS库函数分析

CH569 USB3.0 解析

havc_W的博客 7685

is null 和 is not null 都不能利用 索引

  网上有些资料说含有 null 的列不能创建索引,还有资料说因为一般的索引是 b_ 树结构,而 b+ 树不能存储 null 值,所以 is null 和 is not null 都不能利用 索引。为了证明以上说法,我做了一下测试。 1. 测试含有 null 的列是否能创建索引 先创建测试数据 : create table student

cxzhq2002的杂记 1万+

31、车载通信中的可见光通信(VLC)技术解析

本文详细解析了车载通信中可见光通信(VLC)技术的应用背景、优势及发展前景。对比传统RF通信技术(如DSRC),VLC利用LED照明设备实现高效、安全的车辆与车辆、车辆与基础设施之间的通信,具有频谱资源丰富、安全性高、无电磁干扰等优势。文章还探讨了VLC在交叉口交通控制、高速公路通信、自动驾驶等场景的应用潜力,展望了其在未来智能交通系统中的重要作用。

hill8的博客 318

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

oracle删除索引主键的sql语句,sql 高级 (五)(create index(创建索引) drop)

SQL create index 语句create index语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。用户无法看到索引,它们只能被用来加速搜索/查询。更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。允许使用重复的值:create index index_...

weixin_31440211的博客 5305

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

DB2&SQL语句性能优化

DB2&SQL语句性能优化标签(空格分隔): DB2 SQL 性能优化资料来源: (转)SQL 优化原则 避免全表扫描 Where中少用NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE,它们会引起全表扫描。WHERE子句中的顺序 表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件写在Where子句的末尾。避免Select * Sel

Scfan的博客天涯 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

DB2联邦重点

为什么80%的码农都做不了架构师?>>> ...

weixin_33887443的博客 553

SQL CREATE INDEX 语句- 提高数据库检索效率的关键步骤

为了方便其他设备和平台的小伙伴观看往期文章:,关注后即可获取最新文章推送看完如果觉得有帮助,欢迎。

小万哥的博客 1387

SQLines数据库迁移工具:从Oracle到PostgreSQL的完整迁移实战指南

数据库迁移是现代企业数字化转型中的关键挑战,特别是当您需要将Oracle数据库迁移到PostgreSQL时,语法差异、数据类型不兼容、存储过程转换等问题常常让技术团队头疼不已。SQLines作为一款功能强大的开源数据库迁移工具,专门解决跨数据库平台的SQL转换难题,支持包括Microsoft SQL Server、Oracle、MySQL、PostgreSQL、IBM DB2等在内的十多种主流数据

gitblog_00757的博客 233

分析create table 在不同数据库中的情况!

1: sql server 2000 create table moduleConfig ( id int not null primary key, modulename varchar(50), moduleDescript varchar(200), moduleid varchar(50), createtime datetime ) select * from...

beyondsanli的专栏 217

第36章 SQL 撤销索引、撤销表以及撤销数据库教程

通过使用 DROP 语句,可以轻松地删除索引、表和database。

1089

Ryzen AI 混合推理提速 5 大技巧:Phi-3.5-mini-instruct_rai_1.8.0_npu_16K 性能优化指南

Phi-3.5-mini-instruct_rai_1.8.0_npu_16K 是 AMD 专为 Ryzen AI NPU 深度优化的 Phi-3.5-mini 指令模型,采用「CPU + NPU」混合推理架构,支持 16K 上下文与 4-bit 量化部署。本文面向新手,从官方配置文件出发,提炼出 **5 大 Ryzen AI 混合推理提速技巧**,帮你在 Ryzen AI 笔记本上把这个小钢炮跑

gitblog_00206的博客 405

SQL学习笔记|四

SQL CREATE INDEX 语句(索引,在不读取整张表的情况下,索引使得数据库应用程序可以更快地查找数据) 更新一个包含索引的表笔更新一个不包含索引的表需要更多的时间,这是由于索引本身也需要更新时间。 因此,最理想的索引是创建在被搜索列上的。 允许重复行 CREATE INDEX index_name ON table_name (column_name) 不允许重复行 CRE...

JunLi_YNU的博客 303

工作中使用到的单词(软件开发)_第三版

====

sun0322 1万+

数据库 - SQL基础操作

本文介绍了常用数据库数据类型及基础SQL操作。数据类型涵盖字符串、数值、日期时间、二进制、布尔、JSON等,不同数据库支持略有差异,如Oracle专用的VARCHAR2、NVARCHAR2、BLOB等。基础命令包括INSERT、DELETE、UPDATE、SELECT等数据操作,以及DISTINCT、ORDER BY、GROUP BY、HAVING、JOIN等查询控制语句。同时简要说明了DDL中建表语法,强调字段类型选择与数据库兼容性的重要性。

Hvitur的博客 1390
上一篇: ksh trap signal
下一篇: Simple usage of ant build file build.xml
假装80后
博客等级 码龄19年 28粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值