Ошибка 1064 - синтаксическая ошибка рядом с "при создании триггера - PullRequest
0 голосов
/ 13 июля 2020

Я получаю эту ошибку: Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' в строке 7

по следующему запросу:

DELIMITER //
create trigger UpdateTrigger 
    after update
        on reserva for each row
begin
IF NEW.reserva_valida = 0 THEN
    DELETE FROM companhia_aerea.venda 
    where companhia_aerea.venda = NEW.reserva_id;
END IF;
end;
DELIMITER ;

вот как Я создал обе задействованные таблицы:

RESERVA:

CREATE TABLE IF NOT EXISTS `companhia_aerea`.`reserva` (
  `reserva_id` INT NOT NULL AUTO_INCREMENT,
  `reserva_data_validade` DATE NOT NULL,
  `reserva_valida` TINYINT NOT NULL,
  `reserva_voo_id` INT NOT NULL,
  `reserva_venda_id` INT NOT NULL,
  PRIMARY KEY (`reserva_id`),
  INDEX `fk_reserva_voo1_idx` (`reserva_voo_id` ASC) VISIBLE,
  INDEX `fk_reserva_venda1_idx` (`reserva_venda_id` ASC) VISIBLE,
  CONSTRAINT `fk_reserva_voo1`
    FOREIGN KEY (`reserva_voo_id`)
    REFERENCES `companhia_aerea`.`voo` (`voo_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_reserva_venda1`
    FOREIGN KEY (`reserva_venda_id`)
    REFERENCES `companhia_aerea`.`venda` (`venda_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

VENDA:

DROP TABLE IF EXISTS companhia_aerea.venda;
CREATE TABLE IF NOT EXISTS `companhia_aerea`.`venda` (
  `venda_id` INT NOT NULL AUTO_INCREMENT,
  `reserva_id` INT NOT NULL,
  `venda_parcelas` INT NOT NULL,
  PRIMARY KEY (`venda_id`))
ENGINE = InnoDB;

1 Ответ

0 голосов
/ 13 июля 2020

Вам нужно ссылаться на столбец в предложении where delete, а не на таблицу. Псевдоним таблицы поможет:

DELIMITER //
create trigger UpdateTrigger 
    after update
        on reserva for each row
begin
    IF NEW.reserva_valida = 0 THEN
        DELETE v FROM companhia_aerea.venda v
        WHERE v.reserva_id = NEW.reserva_id;
    END IF;
end;
DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...