PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL:Как да внедрим минимална кардиналност?

Няма начин да се посочи това с помощта на ограничение CHECK, така че мисля, че най-добрият подход е тригер:

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

Ще получите нещо като (не съм го тествал или нещо подобно):

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. експортиране на таблица в csv на postgres

  2. Възможно ли е да се наименуват SQL колони с резултати от редове в друга таблица? (Postgres)

  3. docker compose:postgresql create db, потребителски пропуск и предоставяне на разрешение

  4. Съхранявайте и индексирайте YAML с PostgreSQL, с Javascript lib или функции за многократна употреба?

  5. Rails 4:Използването на функцията PostgreSQL по ред причинява грешка в заявката, поради това, че включената таблица не е свързана