sql >> Database >  >> RDS >> Mysql

in mysql, bij verwijderen cascade werkt niet

Als je t2 op deze manier maakt, werkt het prima:

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 antwoord op zorgen over lelijke code, werkt het onderstaande ook:

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 ;

Het belangrijkste verschil is dat het gegevenstype voor t2.id overeen moet komen met dat van t1.id en dat de beperkingen achter de kolommen moeten worden aangegeven.



  1. MAX() Functie in MariaDB

  2. CASE versus DECODE

  3. Een schemagebonden opgeslagen procedure maken in SQL Server

  4. Gegevens ophalen uit JDBC-database in Jtable