sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Utländsk nyckel vid borttagning sätt null i inte null-fält

Om du ställer in ON DELETE SET NULL till din främmande nyckel så tillåter den dig inte att ställa in fältet som NOT NULL .

Så du kommer inte att kunna skapa eller ändra tabellen med kolumn som NOT NULL och ON DELETE SET NULLCountryId

När jag kör följande uttalanden:

CREATE TABLE `country` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ;

CREATE TABLE `city` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `countryId` int(10) unsigned DEFAULT NOT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_country` (`countryId`),
  CONSTRAINT `FK_country` FOREIGN KEY (`countryId`) REFERENCES `country` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
);

Och jag fick felet i MySQL 5.5 är:

Schema Creation Failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_country` (`countryId`),
  CONSTRAINT `' at line 4: 



  1. MySQL – FOUND_ROWS() Funktion för totalt antal rader som påverkas

  2. Unicode-tecken blir frågetecken efter att de har infogats i databasen

  3. Returnera ID på INSERT?

  4. får fel - SQLSTATE[21000]:Kardinalitetsbrott:1241 Operand bör innehålla 1 kolumn(er)