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

Oracle JDBC:Hvordan ved man, hvilken række der har en unik nøglebegrænsning?

Den eneste måde (jeg kender til) at finde ud af, hvilken række der forårsager problemet, er at bruge Oracles "log fejl ind" funktion. På den måde insert vil ikke give en undtagelse, og enhver række, der overtræder en begrænsning, vil blive skrevet ind i den angivne fejltabel.

For at gøre det skal du først oprette en logtabel, der indeholder de afviste rækker:

EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('BD_VEHICLES_TEMP');

Det vil skabe en tabel med navnet ERR$_BD_VEHICLES_TEMP

Kør derefter ændre dit udsagn til dette:

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

Udsagnet fortsætter, selvom en række ikke validerer begrænsningerne. Når sætningen er færdig, kan du kontrollere indholdet af tabellen ERR$_BD_VEHICLES_TEMP for de rækker, der overtrådte en begrænsning, inklusive fejlmeddelelsen og værdierne.

(Rediger):Hvis du vil stoppe ved den første fejl (og se det i logtabellen), så udelad REJECT LIMIT UNLIMITED klausul.

Flere detaljer findes i manualen:



  1. Sådan opdateres tabellen i oracle

  2. T-SQL for at vise alle brugertilknytninger med databaseroller/tilladelser til et login

  3. Tabeller og indekser vs. HDD og SSD

  4. Hvordan deaktiverer man forbindelsespool?