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

Уникално ограничение за множество таблици

Можете да опитате следното. Трябва да създадете излишно УНИКАЛНО ограничение на (id, aId) в родител (SQL е доста тъпо, нали?!).

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

Вероятно много по-добро решение би било напълно да премахнете parentId от таблицата Child, да добавите bId вместо това и просто препратете към родителската таблица въз основа на (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);

Има ли причина да не можете да направите това?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:извлича текст до N-тия знак в низ

  2. Възможно ли е да се кондензира първичен ключ/сериен?

  3. sql за намиране на най-новия запис в група

  4. ГРЕШКА:повече от един ред е върнат от подзаявка, използвана като израз

  5. Досадно предупреждение за Puppet и Postgres:Предаването на версия към postgresql::server е отхвърлено