sql >> Database >  >> RDS >> Oracle

PL/SQL-ontwikkelaar hoe de rij te krijgen die de invoeging heeft doen mislukken?

Vanaf oracle 10g r2 kun je logfouten clausule van insert commando om fouten in een aparte tabel te loggen. Hier is een voorbeeld:

SQL> create table test_table(
  2    id   number primary key,
  3    col1 varchar2(7)
  4  )
  5  ;

Table created


-- creates a table for logging errors (table name will be prefaced with err$_)
SQL> begin dbms_errlog.create_error_log('TEST_TABLE'); end;
  2  /

PL/SQL procedure successfully completed

-- violates primary key constraint
SQL> insert into test_table(id, col1)
  2  (  select 1, level
  3      from dual
  4    connect by level <= 3)
  5    log errors reject limit unlimited;

1 row inserted

SQL> commit;

SQL> select * from test_table;

        ID COL1
---------- -------
         1 1


SQL> select * from err$_test_table;

ORA_ERR_NUMBER$ ORA_ERR_MESG$                                           ORA_ERR_ROWID$  ORA_ERR_OPTYP$ ORA_ERR_TAG$ ID  COL1
--------------- ------------------------------------------------------------------------------------------------------------
              1 ORA-00001: unique constraint (HR.SYS_C008315) violated  I                                            1     2
              1 ORA-00001: unique constraint (HR.SYS_C008315) violated  I                                            1     3


  1. MySQL - ophalen van een HTML-tabel uit de database - backslashes vóór aanhalingsteken

  2. Nadat de partitie was verwijderd, werd de index onbruikbaar, wat moet ik doen,

  3. PostgreSQL kan json_object_keys niet aanroepen op een scalair

  4. Recursieve CTE schrijven met behulp van Entity Framework Fluent-syntaxis of Inline-syntaxis