PlSQL触发器错误ORA-0000 ORA-06512:

PlSQL触发器错误ORA-0000 ORA-06512:,plsql,ora-00001,ora-06512,nextval,database-trigger,Plsql,Ora 00001,Ora 06512,Nextval,Database Trigger,我想不出哪里出了错。请帮助我:( 请注意,我无法删除约束及其主键。您确定触发器中发生了错误吗?在我看来,可能失败的插入是EMP_报告中的插入-可能是因为EMP_报告中已存在ID为“71”的行。如果您能确认哪个表SYS_C0023329处于打开状态,这将非常有用 但是,假设消息是由触发器生成的-我在触发器中只看到两个插入,都插入到SUP表中,所以问题一定来自其中一个插入 SUP中已经有一行的键值(INSERT语句中没有显示SUP的列名称,因此我不知道该字段的名称)大于MICL_SUP_ID_SEQ

我想不出哪里出了错。请帮助我:(


请注意,我无法删除约束及其主键。您确定触发器中发生了错误吗?在我看来,可能失败的插入是EMP_报告中的插入-可能是因为EMP_报告中已存在ID为“71”的行。如果您能确认哪个表SYS_C0023329处于打开状态,这将非常有用

但是,假设消息是由触发器生成的-我在触发器中只看到两个插入,都插入到SUP表中,所以问题一定来自其中一个插入

  • SUP中已经有一行的键值(INSERT语句中没有显示SUP的列名称,因此我不知道该字段的名称)大于MICL_SUP_ID_SEQ.NEXTVAL的当前值,或者

  • SUP中有一行的键值等于您在第二次插入中提供的新EMP_REPORT.ID字段

  • 第二个问题,提供一个表中的键值(EMP_REPORT)作为第二个表(SUP)的键值对我来说似乎有点可疑,我建议先查看一下。我想您应该从MICL_SUP_ID_SEQ获取一个值,以便在SUP表中使用

    要验证问题是由SUP中的插入引起的,可以尝试执行以下操作:

     *INSERT INTO"EMP_REPORT" (ID, ADDEDDATE, ENTRYADDEDBY_EMP_NO, SUP_EMP_NO, EMP_NO) VALUES ('71', TO_TIMESTAMP('19-MAR-13 09.55.57.983000000 AM', 'DD-MON-RR HH.MI.SS.FF AM'), '81', '841', '5295')
    ORA-00001: unique constraint (SYS_C0023329) violated
    ORA-06512: at line 1
    
    One error saving changes to table  "EMP_REPORT":
    Row 51: ORA-00001: unique constraint (SYS_C0023329) violated
    ORA-06512: at line 1* 
    
    这将告诉您约束在哪个表上


    共享和享受。

    这不是编译错误,这是执行错误。这意味着表中已经有一条记录。唯一约束引用哪个表?(
    从所有约束中选择表名称,其中约束名称='SYS\u C0023329'
    )@VincentMalgrat嗨,非常感谢你的回答,我知道这不是编译错误,但我无法更改任何约束,因为这是实时数据库,我觉得我在for循环(逻辑)中遇到了问题,你能帮我解决吗
     *INSERT INTO"EMP_REPORT" (ID, ADDEDDATE, ENTRYADDEDBY_EMP_NO, SUP_EMP_NO, EMP_NO) VALUES ('71', TO_TIMESTAMP('19-MAR-13 09.55.57.983000000 AM', 'DD-MON-RR HH.MI.SS.FF AM'), '81', '841', '5295')
    ORA-00001: unique constraint (SYS_C0023329) violated
    ORA-06512: at line 1
    
    One error saving changes to table  "EMP_REPORT":
    Row 51: ORA-00001: unique constraint (SYS_C0023329) violated
    ORA-06512: at line 1* 
    
    SELECT *
      FROM ALL_CONSTRAINTS c
      WHERE c.CONSTRAINT_NAME = 'SYS_C0023329';