我有一张名为预订的表,用于存储预订详情。当我尝试创建表时,它给出了错误;
异常形成外键约束
这是我的查询;
CREATE TABLE IF NOT EXISTS `smartbusarrival_sbaDB`.`reservation` (
`res_id` INT NOT NULL,
`user_id` INT NOT NULL,
`bus_id` INT NOT NULL,
`trip_id` INT NOT NULL,
`date` DATE NOT NULL,
`start` INT NOT NULL,
`end` INT NOT NULL,
PRIMARY KEY (`res_id`),
INDEX `fk_user_id` (`user_id` ASC),
INDEX `fk_bus_id` (`bus_id` ASC),
INDEX `fk_trip_id` (`trip_id` ASC),
INDEX `fk_start` (`start` ASC),
INDEX `fk_end` (`end` ASC),
CONSTRAINT `fk_reservation_user`
FOREIGN KEY (`user_id`)
REFERENCES `smartbusarrival_sbaDB`.`users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_reservation_bustrip`
FOREIGN KEY (`bus_id`,`trip_id`)
REFERENCES `smartbusarrival_sbaDB`.`bustrip` (`bus_id`,`trip_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_reservation_start`
FOREIGN KEY (`start`)
REFERENCES `smartbusarrival_sbaDB`.`trip_halt` (`tag`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_reservation_end`
FOREIGN KEY (`end`)
REFERENCES `smartbusarrival_sbaDB`.`trip_halt` (`tag`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
user_id是来自用户表的外来表(主键)
bus_id + trip_id是来自bustrip表(主键)的复合键
start和end是来自trip_halt表的外键。
我调查了类似的问题,但没有解决我的问题。任何人都可以建议解决这个问题。 谢谢!!!
答案 0 :(得分:0)
您作为外键引用的字段应该是唯一的。我认为'tag'字段不是唯一的。