Mysql
 sql >> Datenbank >  >> RDS >> Mysql

In MySQL funktioniert die Kaskade beim Löschen nicht

Wenn Sie t2 so erstellen, funktioniert es gut:

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, als Antwort auf Bedenken wegen hässlichem Code funktioniert das Folgende auch:

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 ;

Der Hauptunterschied besteht darin, dass der Datentyp für t2.id mit dem von t1.id übereinstimmen muss und Einschränkungen nach den Spalten deklariert werden müssen.