PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:Jak zaimplementować minimalną kardynalność?

Nie ma możliwości określenia tego za pomocą ograniczenia CHECK, więc myślę, że najlepszym podejściem jest wyzwalacz:

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

Otrzymasz coś takiego (nie testowałem tego ani nic takiego):

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. PostgreSQL:Jak połączyć tabele 3 posortowane według daty

  2. Wstaw słownik Pythona za pomocą Psycopg2

  3. Aktualizacja Lion usunęła użytkownika „postgres”. Jak go przywrócić?

  4. Czy zawsze możemy pobrać kolumnę daty jako ciąg (varchar) za pomocą knex i postgres?

  5. połączenie odrzucone w oknie dokowanym postgres