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

Unikalne ograniczenie na wielu stołach

Możesz spróbować następujących. Musisz utworzyć nadmiarowe ograniczenie UNIQUE na (id, aId) w Parent (SQL jest dość głupi, prawda?!).

CREATE TABLE Child
(parentId INTEGER NOT NULL,
 aId INTEGER NOT NULL UNIQUE,
FOREIGN KEY (parentId,aId) REFERENCES Parent (id,aId),
createdOn TIMESTAMP NOT NULL);

Prawdopodobnie znacznie lepszym rozwiązaniem byłoby całkowite usunięcie parentId z tabeli Child, dodanie bId zamiast tego i po prostu odwołaj się do tabeli nadrzędnej na podstawie (aId, bId) :

CREATE TABLE Child
(aId INTEGER NOT NULL UNIQUE,
 bId INTEGER NOT NULL,
FOREIGN KEY (aId,bId) REFERENCES Parent (aId,bId),
createdOn TIMESTAMP NOT NULL);

Czy jest jakiś powód, dla którego nie możesz tego zrobić?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja Postgresql z instrukcją if

  2. Funkcja plpgsql:Zwróć wiersze z widoku utworzonego z tabeli losowej

  3. Jak podzielić transakcje tylko do odczytu i do odczytu i zapisu za pomocą JPA i Hibernate

  4. przekonwertuj dowolny ciąg daty na znacznik czasu bez strefy czasowej

  5. Operator nie istnieje:json =json