2 つのテーブルがあり、1 つはフロアです。各フロアには、Floor テーブルにある Floor_ID の外部キーを含む部屋を含めることができます。私はON CASCADE DELETEについて読んでいましたが、それは私の答えのようですが、それについて読んだことについて混乱しています。2 つのコマンドを含むルーチンを呼び出すことができることはわかっています。
DELETE FROM Room WHERE Floor_ID = floorID;
DELETE FROM Floor WHERE Floor_ID = floorID;
しかし、ON CASCADE DELETE を使用して同じことを実行するにはどうすればよいでしょうか? フロアを削除すると、そのフロアに関連付けられているすべての部屋も削除されます。
CREATE TABLE `Floor` (
`Floor_ID` int(11) NOT NULL AUTO_INCREMENT,
`Hub_ID` int(11) NOT NULL,
`FloorNum` int(11) NOT NULL,
`FloorName` varchar(45) DEFAULT NULL,
`Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`Hub_ID`,`FloorNum`),
UNIQUE KEY `Floor_ID_UNIQUE` (`Floor_ID`),
KEY `fk_Floor_Hub1_idx` (`Hub_ID`),
CONSTRAINT `fk_Floor_Hub1` FOREIGN KEY (`Hub_ID`) REFERENCES `Hub` (`Hub_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=124 DEFAULT CHARSET=latin1
CREATE TABLE `Room` (
`Room_ID` int(11) NOT NULL AUTO_INCREMENT,
`RoomLabel` varchar(45) NOT NULL,
`Floor_ID` int(11) NOT NULL,
`FloorArea` decimal(10,2) NOT NULL COMMENT 'Square feet',
`RoomHeight` decimal(10,2) DEFAULT NULL COMMENT 'Feet',
`Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`Room_ID`),
KEY `fk_Room_Floor1_idx` (`Floor_ID`),
CONSTRAINT `fk_Room_Floor1` FOREIGN KEY (`Floor_ID`) REFERENCES `Floor` (`Floor_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=259 DEFAULT CHARSET=latin1