サーバー上に DB があり、これらのテーブルを制約付きで作成します。これは、リレーション N:M の「子テーブル」のコードです。
CREATE TABLE IF NOT EXISTS `Sql183209_2`.`ArtistiXGruppi` (
`idArtistaXGruppo` INT NOT NULL AUTO_INCREMENT,
`Artista` INT NOT NULL,
`Gruppo` INT NOT NULL,
`CapoOrchestra` TINYINT(1) NULL,
`KmDaSede` FLOAT NULL,
PRIMARY KEY (`idArtistaXGruppo`),
INDEX `Gruppo_idx` (`Gruppo` ASC),
UNIQUE INDEX `uniqe` (`Artista` ASC, `Gruppo` ASC),
INDEX `Artista_idy` (`Artista` ASC),
CONSTRAINT `Artista`
FOREIGN KEY (`Artista`)
REFERENCES `Sql183209_2`.`Artisti` (`idArtista`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `Gruppo`
FOREIGN KEY (`Gruppo`)
REFERENCES `Sql183209_2`.`Gruppi` (`idGruppo`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
これが他の 2 つのテーブルのコードです。
CREATE TABLE IF NOT EXISTS `Sql183209_2`.`Artisti` (
`idArtista` INT NOT NULL AUTO_INCREMENT,
`Codice` VARCHAR(45) NULL,
`Matricola` VARCHAR(45) NULL,
`CodiceFiscale` VARCHAR(16) NULL,
PRIMARY KEY (`idArtista`),
UNIQUE INDEX `CodiceFiscale_UNIQUE` (`CodiceFiscale` ASC),
UNIQUE INDEX `Codice_UNIQUE` (`Codice` ASC),
UNIQUE INDEX `Matricola_UNIQUE` (`Matricola` ASC))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `Sql183209_2`.`Gruppi` (
`idGruppo` INT NOT NULL,
`Codice` VARCHAR(45) NOT NULL,
`Nome` VARCHAR(100) NULL,
PRIMARY KEY (`idGruppo`),
UNIQUE INDEX `Codice_UNIQUE` (`Codice` ASC),
CONSTRAINT `agenzia`
FOREIGN KEY (`Agenzia`)
REFERENCES `Sql183209_2`.`Agenzie` (`idAgenzia`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
テーブル Artisti と Gruppi にいくつかの挿入を行いました。ArtistiXGruppi テーブルにデータを挿入し、関連テーブルの Artist または Group 行の 1 つを削除した後、ArtistiXGruppi テーブルで接続された行が削除されることを期待しています。しかし、うまくいきません!なんで?
みんなに感謝し、私の英語でごめんなさい!