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

Добавянето на колона като външен ключ дава ГРЕШКА колона, посочена в ограничението за външен ключ, не съществува

За да добавите ограничение към колона Първо трябва да съществува в таблицата няма команда в Postgresql, която можете да използвате, която да добави колоната и да добави ограничението едновременно. Трябва да са две отделни команди. Можете да го направите с помощта на следните команди:

Първо направете както:

ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;

Използвам integer като тип тук, но трябва да е същият тип на id колона на auth_user таблица.

След това добавяте ограничението

ALTER TABLE links_chatpicmessage 
   ADD CONSTRAINT fk_someName
   FOREIGN KEY (sender) 
   REFERENCES auth_user(column_referenced_name);

ADD CONSTRAINT fk_someName част от тази команда е именуване вашето ограничение, така че ако последно трябва да го документирате с някакъв инструмент, който създава вашия модел, ще имате ограничение с име вместо произволно име.

Също така служи за целите на администраторите, така че DBA да знае, че ограничението е от тази таблица.

Обикновено го именуваме с някакъв намек за това откъде е дошъл до мястото, където препраща към вашия случай, би било fk_links_chatpicmessage_auth_user така че всеки, който види това име, ще знае точно какво е това ограничение, без да прави сложна заявка в INFORMATION_SCHEMA, за да разбере.

РЕДАКТИРАНЕ

Както бе споменато в отговора на @btubbs, всъщност можете да добавите колона с ограничение в една команда. Така:

alter table links_chatpicmessage 
      add column sender integer, 
      add constraint fk_test 
      foreign key (sender) 
      references auth_user (id);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Задайте стойност в зависимост от диаграмата на Helm

  2. PostgreSQL грешно преобразуване от времеви печат без часова зона към времеви печат с часова зона

  3. Как да използвам array_agg() за varchar[]

  4. Как да ускорите производителността на вмъкване в PostgreSQL

  5. PostgreSQL – Как да елиминирате повтарящи се стойности