У меня проблемы с хранимой процедурой.Надеюсь, что кто-нибудь может помочь мне выяснить, в чем проблема.
Я использую данные из Weekly_schedule в качестве шаблона для того, как заполнить мою таблицу рейсов.Я делаю это, вызывая CreateFlights ().Все данные вставляются как положено, поэтому я не пропускаю никаких данных, но по какой-то причине пропускается каждая третья строка, несмотря на то, что я использую auto_increment для flight.id.
(flight.id = 1,2,4, 5,7,8,10,11 ... 472,473,475,476 ...
flight.id = 3,6,9,12 и т. Д. Не равны нулю, их просто нет.)
Я не могу понять, почему я получаю дыры в id-последовательности.Может ли кто-нибудь помочь мне понять, что происходит?Я хочу, чтобы идентификатор рейса был в непрерывной последовательности.
Вот мой код ..
CREATE PROCEDURE CreateFlights()
BEGIN
DECLARE startdate date DEFAULT curdate();
DECLARE enddate date DEFAULT date_add(startdate, interval 367 day);
WHILE startdate <= enddate DO
INSERT INTO flight(`id_weekly_flights`, `flightdate`)
(select `id`, startdate
from `weekly_flights`
WHERE `name_weekdays` = dayname(startdate)
AND `fl_year` = year(startdate));
SET startdate = date_add(startdate, interval 1 day);
END WHILE;
END //
CREATE TABLE weekly_flights (
id int NOT NULL AUTO_INCREMENT,
departuretime time,
fl_year int,
name_weekdays varchar(9),
id_route varchar(8),
PRIMARY KEY (id),
FOREIGN KEY (name_weekdays) REFERENCES weekdays(name),
FOREIGN KEY (id_route) REFERENCES route(id)
)
ENGINE=INNODB;
CREATE TABLE flight (
id int NOT NULL AUTO_INCREMENT,
flightdate date DEFAULT NULL,
id_weekly_flights int,
PRIMARY KEY (id),
FOREIGN KEY (id_weekly_flights) REFERENCES weekly_flights(id)
)
ENGINE=INNODB;
INSERT INTO weekly_flights(departuretime, fl_year, name_weekdays, id_route)
VALUES
(073000,2010,'Monday', 'LIN2STH'),
(073000,2010,'Monday', 'STH2LIN'),
(073000,2010,'Friday', 'LIN2STH'),
(073000,2010,'Friday', 'STH2LIN'),
(210000,2010,'Sunday', 'LIN2STH'),
(210000,2010,'Sunday', 'STH2LIN'),
(073100,2011,'Monday', 'LIN2STH'),
(073100,2011,'Monday', 'STH2LIN'),
(073100,2011,'Friday', 'LIN2STH'),
(073100,2011,'Friday', 'STH2LIN'),
(093100,2011,'Sunday', 'LIN2STH'),
(093100,2011,'Sunday', 'STH2LIN');