sql >> Databasteknik >  >> RDS >> Mysql

Hur man lägger till främmande nyckel (MySQL)

Du kan inte lägga till en NOT NULL-kolumn till en tabell som har fler än noll rader, när kolumnen är begränsad till värden som matchar de i den överordnade tabellen, och ändå bara har NULL-värden eftersom det är en ny, obefolkad kolumn utan DEFAULT .

Lösningen är att göra det stegvis:lägg till kolumnen, men deklarera inte att den INTE är NULL, och deklarera inte den främmande nyckeln ännu.

ALTER TABLE boys
 ADD COLUMN toy_id INT;

Fyll sedan i den med giltiga data som matchar vissa värden i din leksakstabell.

UPDATE boys SET toy_id = ...;

Ändra sedan kolumnen till att vara NOT NULL och skapa begränsningen:

ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
 ADD CONSTRAINT toys_toy_id_fk
 FOREIGN KEY(toy_id)
 REFERENCES toys(toy_id);



  1. VÄNSTER JOIN ordning och gräns

  2. MySQL data trunkeringsfel

  3. Hur fixar man fel i pg_dump-versionen?

  4. Bevaras flyktsekvenser i CLOB?