Oracle唯一约束错误消息

Oracle唯一约束错误消息,oracle,constraints,Oracle,Constraints,我正在维护一个遗留应用程序,最近我联系到,当人们试图填充我们的一个oracle表时,会收到一条错误消息。现在,这些oracle表不在我们的管理范围内,但我仍然希望尝试一些方法来帮助发现问题 无论如何,错误消息如下所示: java.sql.SQLException:ORA-00001:违反了唯一约束(REO0.PK_TableName): 我知道我可以通过谷歌在网上找到很多关于这个错误信息的信息。这不是我的问题 问题是:这里显示的表名(我用粗体表示)是 表的名称,或是 主键添加了表示“主键”的部分

我正在维护一个遗留应用程序,最近我联系到,当人们试图填充我们的一个oracle表时,会收到一条错误消息。现在,这些oracle表不在我们的管理范围内,但我仍然希望尝试一些方法来帮助发现问题

无论如何,错误消息如下所示:

java.sql.SQLException:ORA-00001:违反了唯一约束(REO0.PK_TableName):

我知道我可以通过谷歌在网上找到很多关于这个错误信息的信息。这不是我的问题

问题是:这里显示的表名(我用粗体表示)是 表的名称,或是 主键添加了表示“主键”的部分


我问这个问题的原因是:我无法直接访问这个数据库,但不知何故我可以看到REO0中的所有表,我可以找到一个表名为TableName的表,而不是一个表名为*PK_TableName*。因此,如果这个PK_uu将引用类似于“主键”(违反了的约束)的内容,那么它将更有意义。

PK_utablename
是约束的名称,正如Alex Poole在一篇好的评论中指出的,它已在DDL(
创建表…(列,约束PK_tablename主键)中指定(列…)
,或
ALTER TABLE…添加约束PK\u tablename主键(列…)
在…(列)
上创建唯一索引PK\u tablename。例如,当没有给出名称时,Oracle生成一个以
SYS
开头的名称

请注意,通常
PK_x
建议表x使用主键,但您的约束也可能是外键约束或非空约束(例如)

以下查询将告诉您所有信息:

SELECT * FROM all_constraints WHERE constraint_name = 'PK_TABLENAME'

PK\u tablename
是约束的名称,正如Alex Poole在一篇好的评论中所说,它已在DDL中指定(
CREATE TABLE…(列、约束PK\u tablename主键(列…)
,或
ALTER TABLE…)添加约束PK\u tablename主键(列…)
在…(例如列)
上创建唯一索引PK\u tablename)。如果没有给出名称,Oracle将生成一个以
SYS
开头的名称

请注意,通常
PK_x
建议表x使用主键,但您的约束也可能是外键约束或非空约束(例如)

以下查询将告诉您所有信息:

SELECT * FROM all_constraints WHERE constraint_name = 'PK_TABLENAME'

名称由创建它的人指定(除非它是默认的
SYS$
name),这是一种常用的模式,使用
PK.
。但它只是一个手动维护的数据标准,因此您确实应该查询
ALL.\u CONSTRAINTS
表以检查它是否真的引用了
。我不确定命名是否是自动的,并且我看到一些奇怪的地方,它们在某些情况下已经不协调了伊森…谢谢,我使用了这个,并在all_约束中找到了一些更有用的信息。tablename确实是PK_之后的一个。名称由创建它的人指定(除非它是默认的
SYS$
name),这是一种常用的模式,使用
PK.
。但它只是一个手动维护的数据标准,因此您确实应该查询
ALL.\u CONSTRAINTS
表以检查它是否真的引用了
。我不确定命名是否是自动的,并且我看到一些奇怪的地方,它们在某些情况下已经不协调了伊森…谢谢,我使用了这个,并在all_约束中找到了一些更有用的信息。而且表名确实是PK_之后的那个。