sql >> Database >  >> RDS >> PostgreSQL

Het toevoegen van een kolom als een externe sleutel geeft de ERROR-kolom waarnaar wordt verwezen in de externe sleutelbeperking bestaat niet

Een beperking aan een kolom toevoegen Het moet eerst in de tabel voorkomen er is geen commando in Postgresql dat u kunt gebruiken om de kolom toe te voegen en tegelijkertijd de beperking toe te voegen. Het moeten twee aparte commando's zijn. U kunt dit doen met de volgende opdrachten:

Doe eerst als:

ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;

Ik gebruik integer als type hier, maar het moet hetzelfde type zijn als de id kolom van de auth_user tafel.

Dan voeg je de beperking toe

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

De ADD CONSTRAINT fk_someName een deel van dit commando is naamgeving uw beperking, dus als u deze later moet documenteren met een tool die uw model maakt, heeft u een benoemde beperking in plaats van een willekeurige naam.

Het dient ook voor beheerdersdoeleinden, zodat een DBA weet dat de beperking uit die tabel komt.

Meestal noemen we het met een hint over waar het vandaan komt tot waar het naar jouw zaak verwijst, het zou fk_links_chatpicmessage_auth_user zijn dus iedereen die deze naam ziet, weet precies wat deze beperking is zonder ingewikkelde zoekopdrachten op de INFORMATION_SCHEMA uit te voeren om erachter te komen.

BEWERKEN

Zoals vermeld in het antwoord van @btubbs, kunt u in één opdracht een kolom met een beperking toevoegen. Vind ik leuk:

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


  1. SQL ORDER BY:De 5 do's en don'ts om gegevens als een professional te sorteren

  2. Interne onderdelen van de zeven SQL Server-soorten - Deel 1

  3. Maak een ER-diagram in pgAdmin

  4. Controleer of RPC Out is ingeschakeld op een gekoppelde server