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

Postgres CONSTRAINT DUY NHẤT cho mảng

Tôi không nghĩ rằng bạn có thể sử dụng một hàm với một ràng buộc duy nhất nhưng bạn có thể với một chỉ mục duy nhất . Vì vậy, đã cung cấp một hàm sắp xếp như sau:

create function sort_array(anyarray) returns anyarray as $$
    select array_agg(distinct n order by n) from unnest($1) as t(n);
$$ language sql immutable;

Sau đó, bạn có thể làm điều này:

create table mytable (
    interface integer[2] 
);
create unique index mytable_uniq on mytable (sort_array(interface));

Sau đó, những điều sau sẽ xảy ra:

=> insert into mytable (interface) values (array[11,23]);
INSERT 0 1
=> insert into mytable (interface) values (array[11,23]);
ERROR:  duplicate key value violates unique constraint "mytable_uniq"
DETAIL:  Key (sort_array(interface))=({11,23}) already exists.
=> insert into mytable (interface) values (array[23,11]);
ERROR:  duplicate key value violates unique constraint "mytable_uniq"
DETAIL:  Key (sort_array(interface))=({11,23}) already exists.
=> insert into mytable (interface) values (array[42,11]);
INSERT 0 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một hệ thống bảo mật cho ứng dụng, tổng hợp kết nối và PostgreSQL - Trường hợp cho LDAP

  2. Làm thế nào để quản lý các kết nối db trên máy chủ?

  3. PostgreSql:Json Array to Rows bằng cách sử dụng liên kết bên

  4. Làm cách nào để bạn tìm được số hàng cho tất cả các bảng của mình trong Postgres

  5. Cách thiết lập kết nối từ xa với PostgreSQL