sql >> Database >  >> RDS >> PostgreSQL

Aangepast foutbericht voor Postgresql CHECK IN lijstbeperking

Als u kunt leven met een iets andere controlebeperking, kunt u het volgende doen:

Maak een functie die de waarden controleert:

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;

En gebruik dan die functie in plaats van een IN-voorwaarde:

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

De volgende INSERT

insert into data values ('foo');

zal resulteren in:




  1. Oracle-reeks voor een primaire-sleutelveld haalt de momenteel ingevoegde waarde niet op in de slaapstand

  2. Roep Oracle Stored Procedure aan met behulp van createNativeQuery

  3. MySQL - Een kolom selecteren die niet in Group By is

  4. PostgreSQL - kon geen gelijkheidsoperator identificeren voor type json