Update-Funktion in PostgreSQL
Ich habe eine Frage bezüglich eines update-Funktion, die ich erstellt...
CREATE OR REPLACE FUNCTION rm_category_update(icompany bpchar, iraw_mat_cat_code bpchar, iraw_mat_cat_desc bpchar)
RETURNS character AS
$BODY$
DECLARE
loc_result CHAR(50);
BEGIN
UPDATE rm_category
SET
raw_mat_cat_code = iraw_mat_cat_code,
raw_mat_cat_desc = iraw_mat_cat_desc
WHERE company = icompany;
loc_result = 'success';
RETURN loc_result ;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION rm_category_update(icompany bpchar, iraw_mat_cat_code bpchar, iraw_mat_cat_desc bpchar) OWNER TO postgres;
Okay, also wenn ich die Eingabe eines Datensatzes, der nicht vorhanden ist, zum Beispiel 9, es gibt Erfolg, obwohl ich weiß, es hat nichts aktualisiert!
SQL nicht werfen Fehler, wenn es zu aktualisieren ist, ein nicht existierender Zeile??
Dank
InformationsquelleAutor | 2008-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt von der DBMS - aber Nein, es sollte kein Fehler. Nach dem SQL-standard (ISO/IEC 9075:2008 in diesen Tagen), es sollte die SQLNOTFOUND Zustand (+100), die ist unabhängig von einem Fehler-Zustand. (Mit Informix -, wenn Sie eine MODUS-ANSI-Datenbank, erhalten Sie SQLNOTFOUND; wenn Sie eine nicht-ANSI-Datenbank, Sie erhalten 0 (kein Fehler) als Bedingung. Die Gründe für das pre-Datum der ursprünglichen SQL-86-standard.)
Beachten Sie, dass SQL ist eine set-basierte Sprache. Was Sie gebeten wurde, die Anweisung update eine Reihe von (passenden) Zeilen -- und es ist vollkommen gültig für das update einer Menge ohne (passenden) Zeilen.
InformationsquelleAutor Jonathan Leffler
Könnten Sie "GEFUNDEN" zu erkennen, wenn die Letzte Anweisung eine oder mehrere Zeilen betroffen, siehe Handbuch.
Beispiel:
InformationsquelleAutor Patryk Kordylewski