#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. Попробуйте завершать каждый оператор
;
SoCREATE 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)