Ich versuche, eine Tabelle in der folgenden Art und Weise zu aktualisieren, und eine unique_violation Ausnahme erhalten, diePL/SQL: auf Update-Versuch, Zeile löschen, die unique_violation Ausnahme verursacht
my.db=# UPDATE my_table SET code = REPLACE(code, ‘abd’, ‘abc’);
ERROR: duplicate key value violates unique constraint "my_table_pkey"
DETAIL: Key (code, group_id)=(abc, 1) already exists.
wird erwartet, dass ich weiß, dass ich brauche, um löschen sie die falsche Zeile, anstatt sie zu aktualisieren, wenn es diese Ausnahme verursacht, so etwas wie die folgend ich versuche
DO $$
BEGIN
UPDATE my_table SET code = REPLACE(code, ‘abd’, ‘abc’);
EXCEPTION
WHEN unique_violation THEN
DELETE FROM my_table WHERE code = ‘abd’ AND group_id = ?;
END $$;
zu schreiben Wie würde ich die Ausnahme nur die Zeile löscht verursacht geworfen werden und sicherstellen, dass mein Updates fortsetzen auf allen anderen Einträgen laufen?
Das ist großartig, danke! In der delete-Anweisung kann ich jetzt einfach 'group_id = rec.group_id' verwenden. Danke für Ihre Hilfe – Katie