PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Thông báo lỗi tùy chỉnh cho ràng buộc danh sách Postgresql CHECK IN

Nếu bạn có thể sống với một ràng buộc kiểm tra hơi khác, bạn có thể làm như sau:

Tạo một hàm kiểm tra các giá trị:

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;

Và sau đó sử dụng hàm đó thay vì điều kiện IN:

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

INSERT sau

insert into data values ('foo');

sẽ dẫn đến:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng jsonb_set () để cập nhật giá trị mảng jsonb cụ thể

  2. Truy vấn Rails 3:gặp lỗi khi sử dụng 'select' với 'order'

  3. Tránh bế tắc PostgreSQL khi thực hiện cập nhật hàng loạt và thao tác xóa

  4. libpqxx v12 - liên kết động các giá trị vectơ với câu lệnh đã chuẩn bị (thay thế cho lời gọi)

  5. Tham gia SQL cột bí danh