Как решить ORA-00907: ошибка отсутствия правой скобки?

#sql #oracle

#sql #Oracle

Вопрос:

Я не могу найти ошибку в этом коде, она показывает ORA-00907: отсутствует правая скобка для обоих. Я делаю это в Oracle live SQL.

 CREATE table Final_chart 
( 
T_id int FOREIGN KEY REFERENCES Train(T_id), 
User_id varchar(10) FOREIGN KEY REFERENCES Passenger(User_id), 
Seat_id int FOREIGN KEY REFERENCES Train_Seats(Seat_id), 
CONSTRAINT PNR PRIMARY KEY (T_id,User_id,Seat_id)  
)

CREATE table Train_seats  
(  
T_id int FOREIGN KEY REFERENCES Train(T_id), 
Seat_id int PRIMARY KEY,  
Waiting int NOT NULL,  
Available int NOT NULL,  
Booked_seat int NOT NULL  
) 
  

введите описание изображения здесь

Комментарии:

1. Действительно извините за добавление тега mysql, я использую Oracle….

2. Попробуйте завершать каждый оператор ; So CREATE table tablename (columns....);

3. Игорь, с этим тоже покончено …. не работает

4. Возможно, вам нужны отдельные спецификации внешнего ключа, например constraint pass_fk FOREIGN KEY (User_id) REFERENCES Passenger(User_id), , а не как часть спецификации столбца.

5. @jarlh, но я думаю, вам все равно нужно знать, какой столбец также является частью ограничения… constraint pass_fk FOREIGN KEY (User_Id) REFERENCES Passenger(User_id)

Ответ №1:

Рабочий пример для одной таблицы. И, пожалуйста, используйте varchar2 вместо varchar в oracle.

 CREATE table Final_chart 
(T_id integer, 
User_id varchar2(10), 
Seat_id integer,
CONSTRAINT t2_fk  FOREIGN KEY (T_id) REFERENCES Train(T_id),
CONSTRAINT t1_fk  FOREIGN KEY (User_id) REFERENCES Passenger(User_id),
CONSTRAINT t3_fk FOREIGN KEY  (Seat_id) REFERENCES Train_Seats(Seat_id),
CONSTRAINT Pkr PRIMARY KEY (T_id, User_id, Seat_id)
)
  

Комментарии:

1. и плюс ОДИН при использовании VARCHAR2 вместо VARCHAR

Ответ №2:

Проблема заключается в вашей ссылке на внешний ключ. вот как вы должны это сделать

 CONSTRAINT FK_Train FOREIGN KEY (T_id) REFERENCES Train(T_id)
  

Комментарии:

1. У меня ее не было. Убедитесь, что каждая ссылка соответствует одному и тому же шаблону. ОГРАНИЧЕНИЕ ИМЯ_КОНСТРИНТА_ВНЕШНИЙ КЛЮЧ (столбец) ССЫЛАЕТСЯ На таблицу (Table_Column)