Db2 如何获取唯一密钥冲突的现有记录

Db2 如何获取唯一密钥冲突的现有记录,db2,unique-constraint,rowid,Db2,Unique Constraint,Rowid,执行插入时,我收到以下错误消息 AN INSERTED OR UPDATED VALUE IS INVALID BECAUSE INDEX IN INDEX SPACE xxxxx CONSTRAINS COLUMNS OF THE TABLE SO NO TWO ROWS CAN CONTAIN DUPLICATE VALUES IN THOSE COLUMNS. RID OF EXISTING ROW IS X'0000000A20'.. SQLCODE=-803, SQLSTATE=2

执行插入时,我收到以下错误消息

AN INSERTED OR UPDATED VALUE IS INVALID BECAUSE INDEX IN INDEX SPACE xxxxx CONSTRAINS 
COLUMNS OF THE TABLE SO NO TWO ROWS CAN CONTAIN DUPLICATE VALUES IN THOSE COLUMNS. 
RID OF EXISTING ROW IS X'0000000A20'.. SQLCODE=-803, SQLSTATE=23505, DRIVER=3.53.95
如何进行选择以获取数据库中已存在的行


平台为z/OS
从SYSIBM.SYSDUMMY1中选择GETVARIABLE('SYSIBM.VERSION')
返回
DSN09015
,因此我猜第9版是十六进制格式的。您可以使用Windows calc进行翻译

A20 = 2592

因此,您可以从table_name执行
选择*,其中RID(table_name)=2592
,您将得到所需的
X'0000000 a20'
是十六进制格式。您可以使用Windows calc进行翻译

A20 = 2592

<> p> >您可以从Table名称中执行<代码>选择>,其中RID(TabLEYNEX)= 2592 您将得到您需要的

< P>。您应该考虑实用工具DSN1PRNT,它帮助您以本机格式读取DB2ZOS数据页(甚至数据被压缩)。阅读系统打印并查找您的数据

请记住,RID是此文件中的一个地址:X'pppppp ii'

如果RID为:X'0000000 a20',则页码为X'0000000 a',第ix行的Id为X'20'(X'20'为32位小数==>页面中的第32行)
在SysDelphi中使用ID-MAP表查找第三十二行的地址,并享受数据。

< P>您应该考虑实用工具DSN1PRNT,它帮助您以本机格式读取DB2ZOS数据页(甚至数据被压缩)。阅读系统打印并查找您的数据

请记住,RID是此文件中的一个地址:X'pppppp ii'

如果RID为:X'0000000 a20',则页码为X'0000000 a',第ix行的Id为X'20'(X'20'为32位小数==>页面中的第32行)
在SYSPRINT中使用ID-MAP表查找第32行的地址,并享受您的数据。

您可以更具体一些,或者将您使用的代码发布在这里吗?您需要什么信息?在引用的错误消息中提到了一个RID:在oracle中,我可以执行类似于select*的操作,其中rowid='0000000 A20'并获取数据库中的现有行。我正在寻找DB2的等效版本。如果发布运行DB2的平台(z/OS?)和DB2的版本,这将非常有用。语法(以及是否可能)将取决于此信息。。。我会检查索引中的约束,然后使用列出的列选择行。如果它向您抱怨违反了唯一约束,您应该有必要的信息来检索该行。@IanBjorhovde添加了关于平台的信息。不确定版本,明天将添加该信息。您可以更具体一些,或者在此处发布您使用的代码吗?您需要什么信息?在引用的错误消息中提到了一个RID:在oracle中,我可以执行类似于select*的操作,其中rowid='0000000 A20'并获取数据库中的现有行。我正在寻找DB2的等效版本。如果发布运行DB2的平台(z/OS?)和DB2的版本,这将非常有用。语法(以及是否可能)将取决于此信息。。。我会检查索引中的约束,然后使用列出的列选择行。如果它向您抱怨违反了唯一约束,您应该有必要的信息来检索该行。@IanBjorhovde添加了关于平台的信息。不确定版本,明天将添加该信息。