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

Персонализирано съобщение за грешка за ограничение на списъка CHECK IN на Postgresql

Ако можете да живеете с малко по-различно ограничение за проверка, можете да направите следното:

Създайте функция, която проверява стойностите:

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;

И след това използвайте тази функция вместо условие IN:

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

Следният INSERT

insert into data values ('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. CURRENT_TIMESTAMP в милисекунди

  2. Правилен начин за анотиране на поле за ранг за набор от заявки

  3. postgresql сортиране на масив по думи във всеки елемент

  4. SQLite работи, но мигрираната база данни на PostgreSQL причинява ГРЕШКА - Django 3.0

  5. Репликация на Londiste с PostgreSQL 9.0