error 1064-syntax error near“在触发器创建期间

dzhpxtsq  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(670)

我得到这个错误:错误代码:1064。sql语法有错误;请查看与mysql服务器版本对应的手册,以获取第7行“”附近要使用的正确语法
在以下查询中:

  1. DELIMITER //
  2. create trigger UpdateTrigger
  3. after update
  4. on reserva for each row
  5. begin
  6. IF NEW.reserva_valida = 0 THEN
  7. DELETE FROM companhia_aerea.venda
  8. where companhia_aerea.venda = NEW.reserva_id;
  9. END IF;
  10. end;
  11. DELIMITER ;

我就是这样创建这两个表的:
预订:

  1. CREATE TABLE IF NOT EXISTS `companhia_aerea`.`reserva` (
  2. `reserva_id` INT NOT NULL AUTO_INCREMENT,
  3. `reserva_data_validade` DATE NOT NULL,
  4. `reserva_valida` TINYINT NOT NULL,
  5. `reserva_voo_id` INT NOT NULL,
  6. `reserva_venda_id` INT NOT NULL,
  7. PRIMARY KEY (`reserva_id`),
  8. INDEX `fk_reserva_voo1_idx` (`reserva_voo_id` ASC) VISIBLE,
  9. INDEX `fk_reserva_venda1_idx` (`reserva_venda_id` ASC) VISIBLE,
  10. CONSTRAINT `fk_reserva_voo1`
  11. FOREIGN KEY (`reserva_voo_id`)
  12. REFERENCES `companhia_aerea`.`voo` (`voo_id`)
  13. ON DELETE NO ACTION
  14. ON UPDATE NO ACTION,
  15. CONSTRAINT `fk_reserva_venda1`
  16. FOREIGN KEY (`reserva_venda_id`)
  17. REFERENCES `companhia_aerea`.`venda` (`venda_id`)
  18. ON DELETE NO ACTION
  19. ON UPDATE NO ACTION)
  20. ENGINE = InnoDB;

文达:

  1. DROP TABLE IF EXISTS companhia_aerea.venda;
  2. CREATE TABLE IF NOT EXISTS `companhia_aerea`.`venda` (
  3. `venda_id` INT NOT NULL AUTO_INCREMENT,
  4. `reserva_id` INT NOT NULL,
  5. `venda_parcelas` INT NOT NULL,
  6. PRIMARY KEY (`venda_id`))
  7. ENGINE = InnoDB;
ymzxtsji

ymzxtsji1#

你需要参考 where 合同条款 delete ,而不是table。表别名将有助于:

  1. DELIMITER //
  2. create trigger UpdateTrigger
  3. after update
  4. on reserva for each row
  5. begin
  6. IF NEW.reserva_valida = 0 THEN
  7. DELETE v FROM companhia_aerea.venda v
  8. WHERE v.reserva_id = NEW.reserva_id;
  9. END IF;
  10. end;
  11. DELIMITER ;

相关问题