sql >> Database teknologi >  >> RDS >> Oracle

Fortsæt FLET efter UNDTAGELSE

Du kan gøre dette med error_logging_clause . (Linket er til indsættelsen, fordi i dokumentationen til SAMLET den siger, at den har samme adfærd som en indsættelse.

Til dit tilfælde:

-- You create your Log Table EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('copy_emp', 'TAB_ERR_COPY_EMP'); MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATCHED THEN UPDATE SET c.first_name = e.first_name, c.last_name = e.last_name, c.email = e.email, c.phone_number = e.phone_number, c.hire_date = e.hire_date, c.job_id = e.job_id, c.salary = e.salary, c.commission_pct = e.commission_pct, c.manager_id = e.manager_id, c.department_id = e.department_id WHEN NOT MATCHED THEN INSERT VALUES(e.employee_id, e.first_name, e.last_name, e.email, e.phone_number, e.hire_date, e.job_id, e.salary, e.commission_pct, e.manager_id, e.department_id) LOG ERRORS INTO TAB_ERR_COPY_EMP('TAG_STATEMENT') REJECT LIMIT 100;

Bemærk venligst, at der er nogle begrænsninger for error_logging_clausule. Fra dokumentationen:

  1. Følgende forhold får sætningen til at mislykkes og rulle tilbage uden at aktivere fejllogningsfunktionen:

    • Overtrådte udskudte begrænsninger.

    • Enhver direkte sti-INSERT- eller MERGE-handling, der rejser en unik begrænsning eller indeksovertrædelse.

    • Enhver opdateringsoperation UPDATE eller MERGE, der rejser en unik overtrædelse af begrænsningsindekset).

  2. Du kan ikke spore fejl i fejllogningstabellen for LONG-, LOB- eller objekttypekolonner. Tabellen, der er målet for DML-operationen, kan dog indeholde disse typer kolonner.

    • Hvis du opretter eller ændrer den tilsvarende fejllogningstabel, så den indeholder en kolonne af en ikke-understøttet type, og hvis navnet på den kolonne svarer til en ikke-understøttet kolonne i DML-måltabellen, mislykkes DML-sætningen på parsetidspunktet.

    • Hvis fejllogningstabellen ikke indeholder nogen ikke-understøttede kolonnetyper, logges alle DML-fejl, indtil afvisningsgrænsen for fejl er nået. For rækker, hvor der opstår fejl, logges kolonneværdier med tilsvarende kolonner i fejllogningstabellen sammen med kontroloplysningerne.



  1. bevilling til at oprette synonymer på et andet skema (Oracle)

  2. Hvilken bruger skal eje /usr/local/mysql på Mac?

  3. PHP MYSQL Indsæt data på arabisk sprog

  4. enkelt forespørgsel for at udskrive alle rækker, hvis antal er større end 10