Oracle唯一约束错误消息

Yoh*_*Yoh 0 oracle constraints

我正在维护一个遗留应用程序,最近我联系到人们在尝试填充我们的oracle表时收到错误消息.现在,那些oracle表并不在我们看来,但我仍然想尝试一些东西来帮助找到问题.

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

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

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

问题是:这里显示的表名(我用粗体表示)是表的名称,还是 PK_部分代表'主键'?

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

Ben*_*oit 6

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

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

以下查询将告诉您所有:

SELECT * FROM all_constraints WHERE constraint_name = 'PK_TABLENAME'
Run Code Online (Sandbox Code Playgroud)