sql >> Database teknologi >  >> RDS >> PostgreSQL

Tilpasset fejlmeddelelse for Postgresql CHECK IN-listebegrænsning

Hvis du kan leve med en lidt anden kontrolbegrænsning, kan du gøre følgende:

Opret en funktion, der kontrollerer værdierne:

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;

Og brug så den funktion i stedet for en IN-tilstand:

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

Følgende INDSÆT

insert into data values ('foo');

vil resultere i:




  1. Hvordan håndteres InnoDB-deadlocks korrekt i Java/JDBC?

  2. Hvordan skriver man oracle insert script med et felt som CLOB?

  3. mysql indsæt, hvis rækken ikke allerede eksisterer i en tabel uden UNIKKE FELTER

  4. Samle mellem tabeller i to forskellige databaser?