sql >> Databasteknik >  >> RDS >> Oracle

PL/SQL-utvecklare hur får man raden som gjorde att infogningen misslyckades?

Från oracle 10g r2 kan du använda loggfel a> klausul i infoga kommando för att logga fel i en separat tabell. Här är ett exempel:

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. Toppverktyg för säkerhetskopiering för PostgreSQL

  2. Mysql Gå med två tabeller på nycklar

  3. Mysql EAV matchar rad som fält eller enhets egenskapsvärde

  4. Vad är det korrekta sättet att använda distinct på (Postgres) med SqlAlchemy?