sql >> Databasteknik >  >> RDS >> PostgreSQL

Anpassat felmeddelande för Postgresql CHECK IN-listbegränsning

Om du kan leva med en något annorlunda kontrollbegränsning kan du göra följande:

Skapa en funktion som kontrollerar värdena:

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;

Och använd sedan den funktionen istället för ett IN-villkor:

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

Följande INSERT

insert into data values ('foo');

kommer att resultera i:




  1. Aggregera funktion i en SQL-uppdateringsfråga?

  2. MySQL:hur sorterar man orden i en sträng med hjälp av en lagrad funktion?

  3. få poster av en och endast en typ

  4. Hur man uppdaterar SQL Server-statistik för stora tabeller