Код ошибки: 1136. Количество столбцов не соответствует значению в строке 1, почему? - PullRequest
2 голосов
/ 14 апреля 2020
USE Airline;

CREATE TABLE Responsible_for(
Time_work TIME NOT NULL,
date_work DATE NOT NULL,
Staff_ID INT NOT NULL,
Passenger_ID VARCHAR(45) NOT NULL,
 CONSTRAINT FOREIGN KEY(Passenger_ID) REFERENCES Passenger(Passenger_ID),
 CONSTRAINT FOREIGN KEY(Staff_ID) REFERENCES Staff(Staff_ID));

SELECT * FROM airline.Responsible_for;
INSERT INTO  Responsible_for VALUES(
    ('04:00:00','2019-04-01',1235,'1102546778'));

почему возникает ошибка? спасибо

1 Ответ

3 голосов
/ 14 апреля 2020

У вас есть дополнительная пара скобок вокруг списка значений, которых там быть не должно.

Это должно быть:

INSERT INTO Responsible_for(time_work, date_work, staff_id, passenger_id) 
VALUES ('04:00:00','2019-04-01',1235,'1102546778');

Примечания:

  • хорошая практика - всегда перечислять столбцы в insert; это предотвращает трудные для отладки проблемы и может сделать код устойчивым к изменениям в структуре целевой таблицы

  • you use airline в начале сценария, поэтому существует не нужно добавлять префикс имени таблицы к имени схемы в операторе insert

  • Я бы не рекомендовал хранить компоненты даты и времени в отдельных столбцах; это делает вещи излишне сложными (и менее эффективными), когда вам нужно сравнить их с датой и временем; MySQL имеет тип данных datetime, который предназначен для хранения обоих вместе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...