Oracle唯一约束错误消息

时间:2011-06-10 08:42:28

标签: oracle constraints

我正在维护遗留应用程序,最近我联系到人们在尝试填充我们的oracle表时收到错误消息。现在,那些oracle表格并不在我们的关注范围内,但我仍然想尝试一些方法来帮助找到问题。

无论如何,错误信息如下:

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

我知道我可以通过谷歌在这里找到很多信息,这里有关于此错误消息。这不是我的问题所在。

  

问题是:这里显示的表名(我用粗体表示)就是这样   表的名称,或者是   添加 PK _ 部分代表'主键'?

我要问的原因是:我不能直接访问这个数据库,但不知怎的,我可以看到REO0中的所有表,我可以找到一个带有 TableName 但没有带有* PK_TableName *的表表的名称。因此,如果这个PK_会引用类似'主键'(违反约束条件)的东西,那么它会更有意义。

1 个答案:

答案 0 :(得分:6)

PK_tablename是约束的名称,并且正如 Alex Poole 在一个好注释中所述,它已在DDL中指定(CREATE TABLE ... (columns, CONSTRAINT PK_tablename PRIMARY KEY(columns...) )或{{1例如,}或ALTER TABLE ... ADD CONSTRAINT PK_tablename PRIMARY KEY(columns...)。如果没有给出名称,Oracle会生成一个以CREATE UNIQUE INDEX PK_tablename ON ... (columns)开头的名称。

请注意,通常SYS建议表x的主键,但您的约束也可能是外键约束或非空约束。

以下查询将告诉您所有:

PK_x