Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle JDBC:Skąd wiedzieć, który wiersz rzuca unikalne ograniczenie klucza?

Jedynym sposobem (wiem o tym), aby dowiedzieć się, który wiersz powoduje problem, jest użycie funkcji „logowania błędów do” Oracle. W ten sposób insert nie zgłosi wyjątku, a każdy wiersz naruszający jakiekolwiek ograniczenie zostanie zapisany w określonej tabeli błędów.

Aby to zrobić, musisz najpierw utworzyć tabelę dziennika, która zawiera odrzucone wiersze:

EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('BD_VEHICLES_TEMP');

Spowoduje to utworzenie tabeli o nazwie ERR$_BD_VEHICLES_TEMP

Następnie uruchom zmień swoje oświadczenie na to:

insert into bd_vehicles_temp 
select * 
from bd_vehicles_temp_1
LOG ERRORS REJECT LIMIT UNLIMITED;

Instrukcja będzie kontynuowana, nawet jeśli wiersz nie sprawdzi poprawności ograniczeń. Po zakończeniu wyciągu możesz sprawdzić zawartość tabeli ERR$_BD_VEHICLES_TEMP dla wierszy, które naruszyły ograniczenie, w tym komunikat o błędzie i wartości.

(Edytuj):Jeśli chcesz zatrzymać się przy pierwszym błędzie (i zobaczyć to w tabeli dziennika), pomiń REJECT LIMIT UNLIMITED klauzula.

Więcej szczegółów znajduje się w instrukcji:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj liczbę na słowa w Oracle BI Publisher

  2. Logowanie Framework dla aplikacji ASP.NET

  3. Procedura wykonania klauzuli sprawy

  4. java.sql.SQLException:nie znaleziono odpowiedniego sterownika jdbc:oracle:thin

  5. Wyzwalacz w celu wymuszenia relacji M-M