sql >> Database teknologi >  >> RDS >> Mysql

i mysql, på delete cascade virker ikke

Hvis du opretter t2 på denne måde, fungerer det fint:

CREATE TABLE  `t2` (
  `id` bigint(20) unsigned NOT NULL,
  `data2` text,
  PRIMARY KEY (`id`),
  CONSTRAINT `FK_t2_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ETA, som svar på bekymringer om grim kode, virker nedenstående også:

CREATE TABLE  t2 (
  id bigint(20) unsigned NOT NULL PRIMARY KEY,
  data2 text,
  CONSTRAINT  FOREIGN KEY (id) REFERENCES t1(id) ON DELETE CASCADE
) ENGINE=InnoDB ;

Den største forskel er, at datatypen for t2.id skal matche den for t1.id, og begrænsninger skal erklæres efter kolonnerne.



  1. MySQL-serveren løber tør for hukommelse eller starter ikke

  2. Hvordan viser jeg en MySQL-fejl i PHP for en lang forespørgsel, der afhænger af brugerens input?

  3. Indlejrede CASE-udsagn i MySQL

  4. FEJL 1452 (23000):Kan ikke tilføje eller opdatere en underordnet række:en fremmednøgle-begrænsning mislykkes