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

Cách tạo khóa ngoại có ràng buộc trên bảng tham chiếu trong PostgreSQL

Bạn có thể sử dụng ràng buộc KIỂM TRA cho việc này. Bạn không thể đặt một truy vấn trong ràng buộc KIỂM TRA nhưng bạn có thể gọi một hàm; vì vậy, chúng tôi xây dựng một hàm đơn giản cho chúng tôi biết nếu một pluginid là một ma trận:

create or replace function is_matrix(int) returns boolean as $$
    select exists (
        select 1
        from plugins
        where id   = $1
          and type = 'matrix'
    );
$$ language sql;

và bọc điều đó trong ràng buộc KIỂM TRA:

alter table matrix_params add constraint chk_is_matrix check (is_matrix(pluginid));

Sau đó:

=> insert into matrix_params values (1,1);
=> insert into matrix_params values (2,3);
ERROR:  new row for relation "matrix_params" violates check constraint "chk_is_matrix"

Và FK quan tâm đến tính toàn vẹn của tham chiếu và các tầng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng hợp kết nối cho một ứng dụng Android kết nối với DB Postgresql

  2. Viết một Postgres Nhận hoặc Tạo Truy vấn SQL

  3. Postgresql json like truy vấn

  4. Sử dụng docker-soạn để tạo bảng trong cơ sở dữ liệu postgresql

  5. Không cập nhật cột nếu giá trị cập nhật là null