【问题标题】:Error 1064 - syntax error near " during trigger creation错误 1064 - 创建触发器期间“附近的语法错误”
【发布时间】:2020-07-13 01:03:13
【问题描述】:

我收到此错误: 错误代码: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 ;

这就是我创建所涉及的两个表的方式:

储备:

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;

文达:

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;

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您需要引用deletewhere 子句中的列,而不是表。表别名会有所帮助:

    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 ;
    

    【讨论】:

    • 得到了该查询的响应:错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 7 行的 '' 附近使用正确的语法
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 2016-10-03
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多