Добро пожаловать в удивительный мир SQL! :-)
Общее замечание: сообщите нам, какую СУБД вы используете. MySQL? SQL-сервер? Оракул? СКлайт? В разных системах используются разные типы синтаксисов.
Первое утверждение:
Проблема, кажется, в FOREIGN KEY
-части. Обычно вы говорите что-то вроде:
CONSTRAINT [constraint_name] FOREIGN KEY([column_in_this_table]) REFERENCES OTHER_TABLE([column_in_other_table])
изменить (добавлено):
[column_in_this_table]
должен существовать в вашем DDL (оператор CREATE TABLE
), например: CREATE TABLE Book ( book_title ... etc., publisher_id INT, CONSTRAINT FK_publ_id FOREIGN KEY(publisher_id) REFERENCES publisher(publisher_id));
Здесь у вас будет «исходный» столбец с именем «publisher_id» в таблице «publisher». Вы обращаетесь к нему из таблицы "Книга", сначала имея столбец "publisher_id" в таблице "Книга" (который, кстати, должен иметь тот же DDL, что и исходный столбец) . Далее вы добавите FOREIGN KEY
в таблицу Book, которая накладывается на столбец Book(publisher_id). Обратите внимание, что вы также можете назвать столбец в таблице «Книга» по-разному, например, «Губка Боб» или «Патрик». Но для будущего использования вы хотели бы использовать соглашения об именах, которые сообщают, что вы можете ожидать найти в столбце. Таким образом, вы бы назвали столбцы тем, что они содержат.
Второе утверждение:
Проблема связана с последней частью вашего заявления, где есть запятая после части NOT NULL
для столбца publisher_address
.
(Часть) вашего утверждения:
publisher_address varchar2(60) not null, );
Попробуйте заменить это на:
publisher_address VARCHAR2(60) NOT NULL);
редактировать (примечание для себя): VARCHAR2
оказывается допустимым типом данных в базах данных Oracle (см.: документация Oracle)
person
RvT
schedule
08.11.2017