PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Niestandardowy komunikat o błędzie dla ograniczenia listy Postgresql CHECK IN

Jeśli możesz żyć z nieco innym ograniczeniem sprawdzania, możesz wykonać następujące czynności:

Utwórz funkcję, która sprawdza wartości:

create function check_zone(p_input text)
  returns boolean
as
$$
declare
  l_allowed text[] := array['Marine', 'Terrestrial'];
begin
  if p_input = any(l_allowed) then 
    return true;
  end if;
  raise 'The only allowed values are: %', array_to_string(l_allowed, ', ');
end;
$$
language plpgsql
immutable;

A następnie użyj tej funkcji zamiast warunku IN:

create table data
(
  management_zone text not null,
  CONSTRAINT check_zone CHECK (check_zone(management_zone))
);

Następująca WSTAWKA

insert into data values ('foo');

spowoduje:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd zakleszczenia w instrukcji INSERT

  2. Jak znaleźć tabelę z określoną kolumną w postgresql

  3. Zbuduj dynamiczne zapytanie o aktualizację w psycopg2

  4. Prosty system logowania/autoryzacji za pomocą Dancer i Postgres

  5. Jak używać SQLAlchemy do bezproblemowego dostępu do wielu baz danych?