【发布时间】:2022-01-12 20:35:43
【问题描述】:
当我编写下面提到的触发器时,我收到错误“此处不应插入”
Tables 电影,Lightning 与关联表是多对多关系。
我的目标是当电影表“流派”属性等于“动作”时,将“闪电”表中的 Lumens_power 设置为 5300。
CREATE DEFINER = CURRENT_USER TRIGGER `Film_industry`.`Movies_AFTER_INSERT`
AFTER INSERT ON `Movies` FOR EACH ROW
BEGIN
SELECT genre,
CASE WHEN genre = 'action' THEN INSERT INTO Lightning(id, type, Lumens_power) values('NEW.Movies_id', 'directed', '5300');
END;
FROM Movies;
END;
-- -----------------------------------------------------
-- Table `Film_industry`.`Movies`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Film_industry`.`Movies` (
`id` INT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`released_on` DATE NOT NULL,
`genre` VARCHAR(40) NOT NULL,
`rating` DECIMAL(2,1) NOT NULL,
`finansial_stake` DECIMAL(11,2) NOT NULL,
`Supporting_object_id` INT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
UNIQUE INDEX `title_UNIQUE` (`title` ASC) VISIBLE,
INDEX `fk_Movies_Supporting_object1_idx` (`Supporting_object_id` ASC) VISIBLE,
CONSTRAINT `fk_Movies_Supporting_object1`
FOREIGN KEY (`Supporting_object_id`)
REFERENCES `Film_industry`.`Supporting_object` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Film_industry`.`Lightning`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Film_industry`.`Lightning` (
`id` INT NOT NULL AUTO_INCREMENT,
`type` VARCHAR(45) NOT NULL,
`Lumens_power` INT NOT NULL,
`Scene_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_Lightning_Scene1_idx` (`Scene_id` ASC) VISIBLE,
CONSTRAINT `fk_Lightning_Scene1`
FOREIGN KEY (`Scene_id`)
REFERENCES `Film_industry`.`Scene` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
【问题讨论】: