Transazioni e gestione degli errori in PostgreSQL
Jason Myers
Principal Engineer
INSERT INTO sales (name, quantity, cost)
VALUES
('chocolate chip', 6, null);
ERROR: null value in column "cost" violates not-null constraint
DETAIL: Failing row contains
(1, "chocolate chip", 6, null, 2020-04-28 19:58:55.715886).
R
tryCatch(
sqrt("a"),
error=function(e)
print("Boom!")
)
Python
try:
math.sqrt("a")
except Exception as e:
print("Boom!")
PL/pgSQL
BEGIN
SELECT
SQRT("a");
EXCEPTION WHEN others THEN RAISE INFO 'Boom!';
END;
Risultati
R: Boom!
Python: Boom!
SQL: INFO: Boom!
DO $$DECLARE some_variable text;BEGIN SELECT text from a table; END;$$ language 'plpgsql';
DO $$
BEGIN
SELECT SQRT("a");
EXCEPTION
WHEN others THEN
INSERT INTO errors (msg) VALUES ('Impossibile calcolare la radice quadrata di una stringa.');
RAISE INFO 'Impossibile calcolare la radice quadrata di una stringa.';
END;
$$ language 'plpgsql';
| colonna | tipo |
|---|---|
| patient_id | integer |
| a1c | double (float) |
| glucose | integer |
| fasting | boolean |
| created_on | timestamp |
| colonna | tipo |
|---|---|
| error_id | integer |
| state | string |
| msg | string |
| detail | string |
| context | string |
Transazioni e gestione degli errori in PostgreSQL