2016-04-13 13 views
1

Ich habe eine Prozedur zum Einfügen einer Zeile in einer Tabelle. Ich mache verschiedene Überprüfungen und wenn alles passiert, fügt es eine Reihe in den Tisch ein.In Orakel-Prozedur, überprüfen Sie, ob die Zeile mit Primärschlüssel vorhanden ist, wenn Schlüssel bereits vorhanden ist Raise Ausnahme

Eine der Prüfungen besteht darin, zu prüfen, ob in der Tabelle bereits eine Zeile mit Primärschlüssel existiert. Wenn die Zeile mit dem Primärschlüssel bereits existiert, sollte die Prozedur in der Lage sein, sie zu fangen und den Fehler zu melden.

Was wird der beste Weg sein?

Antwort

1

Anstatt manuell nach einem Primärschlüsselkonflikt zu suchen, lassen Sie sich Oracle von Ihnen behandeln. Wenn Sie versuchen, in eine Tabelle einzufügen, und ein Primärschlüsselkonflikt gefunden wird, löst Oracle die Ausnahme 'dup_val_on_index' aus. Zum Beispiel:

declare 
begin 
    --try and insert a value into the table 
    insert into my_table (
    id, 
    description 
) values (
    1, 
    'a duplicate id' 
); 
exception 
    when dup_val_on_index then 
    dbms_output.put_line('a duplicate primary key'); 
    --your error handling logic here 
    raise; --optionally re-raise the exception 
end; 
+1

Auf diese Weise fangen Sie nicht nur PK Verletzungen, sondern jede Verletzung einer eindeutigen Einschränkung – Aleksej

+0

Sweet. Das ist, was ich gesucht habe. Vielen Dank. – DarcliGht

Verwandte Themen