TO
является зарезервированным ключевым словом . Если вы действительно настаиваете на его использовании, вам нужно использовать двойные кавычки , чтобы избежать его, например, "to"
.
Но как только вы это сделаете, имя становится регистром чувствительным , поэтому TO
и "TO"
- это разные имена (потому что TO
свернут в нижний регистр).
Однако использование указанных в кавычках идентификаторов настоятельно не рекомендуется , и я крайне рекомендую вам найти другое имя столбца, которое не нужно заключать в кавычки.
Другая проблема - имена столбцов 3PTA
и 3PTM
. Идентификаторы не могут начинаться с цифры, поэтому вам также нужно найти для них другое имя (если только вы не хотите использовать эти страшные двойные кавычки).
Повторение столбца первичного ключа целевой таблицы не необходимо для встроенного предложения ССЫЛКИ. Вы также дважды определили столбцы FTM
и PTS
.
Не причиной ошибки, а другим неправильным выбором является тип serial
для player_id. serial
не тип данных. Это сокращение для столбца integer
, который получает значение по умолчанию из последовательности. Столбцы внешнего ключа никогда не следует определять как последовательные, поскольку они ссылаются на уже сгенерированное значение. Таким образом, это должно быть player_id integer REFERENCES {1}(id),
Если сложить все это вместе, SQL должно выглядеть так:
CREATE TABLE IF NOT EXISTS some_table (
id serial primary key,
player_id integer references other_table,
gp smallint,
pta3 smallint, --<< here
ptm3 smallint, --<< here
fga smallint,
fgm smallint,
fta smallint,
ftm smallint, --<< only once!
pts smallint, --<< only once!
reb smallint,
ast smallint,
stl smallint,
blk smallint,
to_x smallint --<< change here
);