PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Персонализирани изключения на PostgreSQL?

Не, не така. Но можете да създавате и поддържате свои собствени изключения, без проблем:

CREATE TABLE exceptions(
    id serial primary key,
    MESSAGE text, 
    DETAIL text, 
    HINT text, 
    ERRCODE text
);

INSERT INTO exceptions (message, detail, hint, errcode) VALUES ('wrong', 'really wrong!', 'fix this problem', 'P0000');

CREATE OR REPLACE FUNCTION foo() RETURNS int LANGUAGE plpgsql AS
$$
DECLARE
    row record;
BEGIN
    PERFORM * FROM fox; -- does not exist, undefined_table, fail

    EXCEPTION
        WHEN undefined_table THEN
            SELECT * INTO row FROM exceptions WHERE id = 1; -- get your exception
            RAISE EXCEPTION USING MESSAGE = row.message, DETAIL = row.detail, HINT = row.hint, ERRCODE = row.errcode;

    RETURN 1;
END;
$$

SELECT foo();

Разбира се, можете също така да ги кодирате твърдо във вашите процедури, това зависи от вас.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Размер на индекса на PostgreSQL и число на стойността

  2. Вземете името на месеца от дата в PostgreSQL

  3. Как да разрешите грешката „fe_sendauth:няма предоставена парола“ в Rails с помощта на PostgreSQL?

  4. Връщане след грешка в транзакцията

  5. Heroku прехвърля db от едно приложение в друго