【问题标题】:MySql problem with save DATEDIFF in column在列中保存 DATEDIFF 的 MySql 问题
【发布时间】:2020-04-04 16:25:20
【问题描述】:

我正在编写一个酒店数据库,我有一个关于 DATEDIFF 函数的问题。我有一张桌子,上面有客人 ID、到达日期、出发时间,我希望 DATEDIFF(出发、到达)写在同一张表的另一列中。我怎样才能做到这一点?我试着做两张表,但它工作了一次,当我添加另一个客人时,每次都会弹出主键重复错误。

当我创建空列“长度”并尝试在此列中保存选择时显示错误。 代码: 插入预订(length_of_stay)从预订中选择 DATEDIFF(出发,到达); 错误:

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`input_qt_plus`.`reservations`, CONSTRAINT `fk_reservations_guests` FOREIGN KEY (`guests_id_guests`) REFERENCES `guests` (`id_guests`) ON DELETE NO ACTION ON UPDATE NO ACTION)

表格:

这是一张有客人的桌子:

 CREATE TABLE IF NOT EXISTS `input_qt_plus`.`guests` (
      `id_guests` INT NOT NULL AUTO_INCREMENT,
      `first_name` VARCHAR(45) NOT NULL,
      `last_name` VARCHAR(45) NOT NULL,
      `email` VARCHAR(45) NOT NULL,
      `phone` VARCHAR(45) NOT NULL,
      `id_num` VARCHAR(45) NULL,
      PRIMARY KEY (`id_guests`))
    ENGINE = InnoDB;

这是一张有保留的桌子:

CREATE TABLE IF NOT EXISTS `input_qt_plus`.`reservations` (
  `id_res` INT NOT NULL AUTO_INCREMENT,
  `guests_id_guests` INT NOT NULL,
  `arrival` DATE NOT NULL,
  `departure` DATE NOT NULL,
  PRIMARY KEY (`id_res`),
  INDEX `fk_reservations_guests_idx` (`guests_id_guests` ASC),
  CONSTRAINT `fk_reservations_guests`
    FOREIGN KEY (`guests_id_guests`)
    REFERENCES `input_qt_plus`.`guests` (`id_guests`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

【问题讨论】:

  • 请添加您的表定义和导致重复键错误的步骤。

标签: mysql mysql-workbench mysql-error-1064


【解决方案1】:

试试这个查询:希望它能工作

INSERT INTO your_table (field1, field2, arrival, departure, length)
    VALUES (value1, value2, arrivalDate, departureDate, DATEDIFF(day,arrivalDate, departureDate))

【讨论】:

    【解决方案2】:

    因为您要更新同一张表,所以您应该参考它两次。 首先将列添加到表中(假设您将其称为stay_for),然后像这样更新它-

    update reservations R
    inner join reservations R2
    on R2.id_res = R.id_res
    set R.stay_for =  DATEDIFF(R2.departure, R2.arrival);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      相关资源
      最近更新 更多