PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL:Bagaimana cara menerapkan kardinalitas minimum?

Tidak ada cara untuk menentukan ini menggunakan batasan CHECK, jadi saya pikir pendekatan terbaik adalah pemicu:

http://www.postgresql.org/docs/9.1/static /sql-createtrigger.html
http://www.postgresql.org/docs /9.1/static/plpgsql-trigger.html

Anda akan berakhir dengan sesuatu seperti (saya belum mengujinya atau apa pun):

CREATE TRIGGER at_least_one before INSERT, UPDATE, DELETE ON the_one_table  FOR EACH ROW EXECUTE PROCEDURE check_at_least_one();

CREATE OR REPLACE FUNCTION check_at_least_one() RETURNS trigger AS $$
    BEGIN
    nmany := select count(*) from the_many_table where the_many_table.the_one_id=NEW.id;   
    IF nmany > 0 THEN 
        RETURN NEW;
    END IF;
    RETURN NULL;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Izin Pengguna PostgreSQL

  2. Hapus fungsionalitas dengan spark sql dataframe

  3. Mengapa Sekuel migrasi membuat tabel tetapi model tidak dapat terhubung ke database

  4. Postgresql:Batasan unik atas Union of 2 kolom

  5. Menyebarkan Django + Python 3 + PostgreSQL ke AWS Elastic Beanstalk