sql >> Database >  >> RDS >> Mysql

Probleem bij het toevoegen van Foreign Key met behulp van Alter Table met bestaande MYSQL-database - kan het niet toevoegen! Helpen!

Zijn beide tabellen van het type InnoDB?

Heeft de bedrijfstabel een index op company_id ?

Ik vermoed dat uw tabel MyISAM is (de standaardinstelling als u de configuratie niet hebt gewijzigd) en dat u geen beperkingen voor externe sleutels kunt maken in MyISAM. Zie de beschrijving van de CREATE TABLE voor je twee tafels.

Als beide tabellen leeg zijn, laat u ze vallen en maakt u ze opnieuw aan, waarbij u InnoDB als engine kiest. U kunt ook de FOREIGN KEY-beperkingen toevoegen aan de script(s) voor het maken van tabellen.

Van MySQL Referentiehandleiding :

@egervari:Wat gebeurt er als je dit uitvoert:

CREATE TABLE `test` (
  `company_id` bigint(20) NOT NULL,
  `module_id` bigint(20) NOT NULL,

  KEY  (`module_id`),
  KEY  (`company_id`),

  CONSTRAINT `test_fk_module`
    FOREIGN KEY (`module_id`)
    REFERENCES `module` (`module_id`),

  CONSTRAINT `test_fk_company`
    FOREIGN KEY (`company_id`)
    REFERENCES `company` (`company_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

En als je rent:

ALTER TABLE `company_to_module`
  ADD CONSTRAINT `company_to_module_fk_company` 
    FOREIGN KEY (`company_id`)
    REFERENCES `company` (`company_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT;


  1. Syntaxis voor SQL-updatequery met inner join

  2. Voordelen van het gebruik van SQL Ordinale Positie Notatie?

  3. Microsoft Access Table Tips – Trucs &Richtlijnen Deel 2

  4. DATEDIFF-functie in Oracle