【问题标题】:General error: 1 OCIStmtExecute: ORA-00001: unique constraint (HR.SYS_C004023) violated?一般错误:1 OCIStmtExecute:ORA-00001:违反唯一约束(HR.SYS_C004023)?
【发布时间】:2010-10-07 12:23:49
【问题描述】:

我可以识别出由于唯一值约束导致的错误消息,我的表是“分支”,以及 SYS_C004023 是从哪里来的。我检查了分支表,没有重复值。可能是什么问题。

【问题讨论】:

    标签: sql oracle oracle10g unique-constraint ora-00001


    【解决方案1】:

    SYS_C004023 是从哪里来的

    这是一个系统生成的约束名称,Oracle 在创建约束时创建该名称,但没有明确命名,例如

    create table mytable (col1 integer primary key);
    

    mytable 上的主键约束将由系统生成,因为我没有像这样显式命名它:

    create table mytable (col1 integer constraint mytable_pk primary key);
    

    你可以像这样找出这个约束在哪个表上:

    select table_name
    from all_constraints
    where owner = 'HR'
    and constraint_name = 'SYS_C004023';
    

    您可以像这样找出它使哪些列独一无二:

    select column_name
    from all_cons_columns
    where owner = 'HR'
    and constraint_name = 'SYS_C004023';
    

    没有重复值

    不,不会有,多亏了限制。插入或更新行的尝试失败,从而违反了唯一性约束。

    【讨论】:

    • 非常感谢您的回答,就像我将一些 10-20 条记录从 mysql 表复制到 oracle ......以及从 1-20 的主要 id。但是,我也添加了序列,从 1 开始,所以我认为,当我截断所有内容并再次插入并且它起作用时,这就是问题所在......哇......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多