Auf Unique_violation Ausnahme, wie die Zeile aktualisieren oder zu löschen, die die Ausnahmeausführen löschen oder auf eindeutige Verletzung aktualisieren in Postgres
angehobenTabellencode und fügen Sie
create table test
(
id serial not null,
str character varying NOT NULL,
is_dup boolean DEFAULT false,
CONSTRAINT test_str_unq UNIQUE (str)
);
INSERT INTO test(str) VALUES ('apple'),('giant'),('company'),('ap*p*le');
Funktion
CREATE OR REPLACE FUNCTION rem_chars()
RETURNS void AS
$BODY$
BEGIN
begin
update test set str=replace(str,'*','');
EXCEPTION WHEN unique_violation THEN
--what to do here to delete the row which raised exception or
--to update the is_dup=true to that row
end;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION rem_chars() OWNER TO postgres;
Was ist es, was Sie tun wollen? LÖSCHEN oder UPDATE in der Ausnahme? –
@hawnn Jeder ist in Ordnung, update oder delete.Ich weiß die Syntax, aber weiß nicht, wie man das auf diese bestimmte Zeile mit where-Klausel anwenden oder Gibt es etwas ähnliches zu last_insert_id, die die ID der Zeile zurückgibt, die Ausnahme ausgelöst. – kiranking
Sie sollten diese Erklärung von Anfang an in der Frage gehabt haben. Ich glaube nicht, dass Sie herausfinden können, welche Zeile das Problem verursacht hat. –